angular canDeactivateGuard示例在文档中替换了之前的URL,如果按下后退按钮并且用户取消导航,

ql3eal8s  于 4个月前  发布在  Angular
关注(0)|答案(1)|浏览(92)

哪个@angular/*包是bug的来源?

router

这是个回归吗?

描述

在尝试使用https://angular.io/guide/router-tutorial-toh#candeactivate-handling-unsaved-changes中记录的方法时,我注意到未保存更改保护实现在以下用例中具有意外的行为:
重现步骤(在Firefox上测试):

  1. 下载并运行https://angular.io/generated/zips/router/router.zip提供的代码
  2. 转到http://localhost:4200/crisis-center
  3. 点击第一个危机,带你到http://localhost:4200/crisis-center/1
  4. 对危机名称进行更改,但不保存
  5. 点击浏览器后退按钮
  6. 注意,url变为http://localhost:4200/crisis-center,弹出确认对话框
  7. 点击“取消”。
    结果:
    历史记录如下(活动路由位于位置0):
    [http://localhost:4200/crisis-center/1, http://localhost:4200/crisis-center/1]
    预期结果:
    历史记录应如下(活动路由应位于位置1):
    [http://localhost:4200/crisis-center, http://localhost:4200/crisis-center/1]

请提供一个链接,以便最小化地重现bug

https://angular.io/generated/zips/router/router.zip

请提供您看到的异常或错误

No errors, just the unexpected behaviour.

请提供您发现此bug的环境(运行ng version)

_                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
    

Angular CLI: 16.2.0
Node: 16.19.0
Package Manager: npm 8.19.3
OS: darwin x64

Angular: 16.2.2
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1602.0
@angular-devkit/build-angular   16.2.0
@angular-devkit/core            16.2.0
@angular-devkit/schematics      16.2.0
@angular/cli                    16.2.0
@schematics/angular             16.2.0
rxjs                            7.8.1
typescript                      4.9.5
zone.js                         0.13.1

还有其他信息吗?

  • 无响应*
dfty9e19

dfty9e191#

的确,情况就是这样。有一个选项可以配置路由器在导航被拒绝时返回到前一个页面。这可以通过RouterModule.forRoot(routes, {canceledNavigationResolution: 'computed'})来启用。文档应该更新以提及这一点。

相关问题