【问题标题】:Angular - Router navigate canceled without reasonAngular - 路由器导航无故取消
【发布时间】:2017-12-11 22:22:00
【问题描述】:

我有一个 Angular (4.2.5) 应用程序,在我的代码中的某个时刻,我这样做了:

this._appService
    .post('/createhero/save', opts)
    .subscribe(
        (resData: any) => 
        {   
            this._router.navigate(['home']);
        }
    );

navigate() 的路由器调用不起作用 - 没有任何反应。我启用了路由调试,这就是我得到的:

所以导航被无故取消。在其他组件中,我有相同类型的 navigate()(也有一些在可观察的回调中),效果很好。路线/home 也可以。

我的想法开始用完了,我什至不知道为什么navigate() 在这种情况下不起作用。

【问题讨论】:

  • 您在哪里使用导航代码?
  • 在我的 CreateHeroComponent save() 方法中,由按钮<button (click)="save()">Done</button>触发
  • 对我来说,问题也来自一名警卫(MsalGuard 来自@azure/msal-angular@2.0.5),并且只发生在像“/foo”这样的小名路线上的初始导航(a来自@azure/msal-angular 的错误;特别是,通过将路由重命名为“/foo-bar-baz”,问题消失了)

标签: javascript angular routes angular-routing


【解决方案1】:

有类似的问题,reason 真的无济于事:)

我的问题是,我试图导航的路线有一个自己的守卫订阅 observable 并且由于我已经赋予它价值,所以 observable 的初始值是 false 并且由于路线被阻止,导航已取消。

可能是其他守卫阻塞了路由,canActivate() 给出了true/false,这取决于您的查询结果,但实际上并没有等待结果?

希望这有助于调试:)

【讨论】:

  • 老兄,正是这样 - 我几天前找到了解决方案,但玩得很好,你成功了 =)
  • 我有一条子路线,它有更严格的保护等级,这帮助了我。感谢您的提示。
  • 各位,我也有类似的问题,你们是怎么解决的?
  • 你拯救了我的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2015-10-24
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多