什么都可能导致NavigationCancel事件被触发?

时间:2017-06-05 14:59:18

标签: angular angular2-routing

我订阅了angular2中的路由器事件,当我控制事件时,我发现了一个NavigationCancel事件reason: ""。很想知道所有可能是NavigationCancel被触发的原因。不仅有empty的原因,而且一般。

2 个答案:

答案 0 :(得分:6)

当你试图导航到一条路线时会触发

NavigationCancel,导航的路线无法加载儿童(CanLoad后卫)或路线本身无法激活(CanActivate后卫)

您可以在配置{enableTracing : true}时使用RouterModule查看所有事件,并进一步分析。

希望这会有所帮助!!

答案 1 :(得分:0)

这很晚了,但是我希望它能对其他人有所帮助,因为我也为此而苦苦挣扎。

所以,发生这种情况的另一个原因是导航事件被触发了两次。

这是我的错,因为我有一个带有routerLink指令的组件,该组件的输入绑定具有相同的名称:

我的组件类:

@Input() routerLink: string[];

我的组件模板:

...
<a [routerLink]="routerLink">
...

父组件模板如下:

...
<my-component
   [routerLink]="somePath"
   ...
>

实际上是在创建另一个routerLink指令绑定。 结果,导航事件几乎同时触发两次,从而产生了NavigationCancel事件。