首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 2: NavigationCancel -导航ID %2不等于当前导航id %3

Angular 2: NavigationCancel -导航ID %2不等于当前导航id %3
EN

Stack Overflow用户
提问于 2017-01-30 21:29:10
回答 4查看 15.4K关注 0票数 26

我正在尝试将旧的URL(电子邮件模板中的链接)从以前的站点重定向到另一个路由,如下所示:

代码语言:javascript
复制
if (route.url.indexOf('/#/') !== -1) {
    this.router.navigate(['/my-route']);
}

但是,由于以下原因,导航被取消:

Navigation ID 2 is not equal to the current navigation id 3

查看Angular 2路由器源代码,当id !== this.navigationId (https://github.com/angular/angular/blob/master/modules/@angular/router/src/router.ts#L652)时,这在runNavigate方法中发生。我找不到任何关于navigationId属性的信息,为什么会发生这种情况,以及如何解决它。

存在的路由之间的重定向似乎可以工作,但这些旧的hashmark URL和现有路由之间的重定向不起作用。路由器中是否必须同时存在两条路由才能在它们之间进行重定向?

如果能帮上忙,我们将不胜感激。

EN

回答 4

Stack Overflow用户

发布于 2017-03-15 14:05:41

我得到这个错误是因为我快速地连续调用了两次router.navigate (1次用于追加queryParams,1次用于追加片段),因此必须重构我的代码,使其只调用navigate一次。

票数 37
EN

Stack Overflow用户

发布于 2020-09-09 18:15:13

我们得到了相同的错误。问题出在一个自定义组件上,该组件具有一个名为routerLink的输入字段,用于自定义链接。但是这个字段导致Angular做了两次导航,导致了“导航ID 2不等于当前导航id 3”的错误。

票数 1
EN

Stack Overflow用户

发布于 2020-05-04 23:02:29

我有完全相同的问题,但找到了另一个原因来解释它。

这是因为我的锚链接上的一个href="#"属性,我让onClick方法调用这个router.navigate()

这里有详细的答案:

https://stackoverflow.com/a/61595269/3992814

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41937115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档