我订阅了angular2
中的路由器事件,当我控制事件时,我发现了一个NavigationCancel
事件reason: ""
。很想知道所有可能是NavigationCancel
被触发的原因。不仅有empty
的原因,而且一般。
答案 0 :(得分:6)
NavigationCancel
,导航的路线无法加载儿童(CanLoad后卫)或路线本身无法激活(CanActivate后卫)
您可以在配置{enableTracing : true}
时使用RouterModule
查看所有事件,并进一步分析。
希望这会有所帮助!!
答案 1 :(得分:0)
这很晚了,但是我希望它能对其他人有所帮助,因为我也为此而苦苦挣扎。
所以,发生这种情况的另一个原因是导航事件被触发了两次。
这是我的错,因为我有一个带有routerLink
指令的组件,该组件的输入绑定具有相同的名称:
我的组件类:
@Input() routerLink: string[];
我的组件模板:
...
<a [routerLink]="routerLink">
...
父组件模板如下:
...
<my-component
[routerLink]="somePath"
...
>
实际上是在创建另一个routerLink
指令绑定。
结果,导航事件几乎同时触发两次,从而产生了NavigationCancel
事件。