【发布时间】:2019-06-24 17:12:36
【问题描述】:
我在angular2 中订阅了路由器事件,当我控制事件时,我发现NavigationCancel 事件与reason: ""。很想知道NavigationCancel 被触发的所有原因。不仅有empty 的原因,而且总的来说。
【问题讨论】:
我在angular2 中订阅了路由器事件,当我控制事件时,我发现NavigationCancel 事件与reason: ""。很想知道NavigationCancel 被触发的所有原因。不仅有empty 的原因,而且总的来说。
【问题讨论】:
NavigationCancel 将在您尝试导航到路线并且导航路线子无法加载(CanLoad 守卫)或路线本身无法激活(CanActivate 守卫)时触发
您可以在配置RouterModule 时使用{enableTracing : true} 来查看所有事件,并进一步分析。
希望这会有所帮助!
【讨论】:
enableTracing 无疑是一个非常好的配置。谢谢!
这已经很晚了,但我希望它可以帮助其他人,因为我也曾为此苦苦挣扎。
所以,发生这种情况的另一个原因是导航事件被触发了两次。
这发生在我身上是错误的,因为我有一个带有 routerLink 指令的组件,它有一个同名的输入绑定:
我的组件类:
@Input() routerLink: string[];
我的组件模板:
...
<a [routerLink]="routerLink">
...
父组件模板是这样的:
...
<my-component
[routerLink]="somePath"
...
>
这实际上是在创建另一个 routerLink 指令绑定。
结果,导航事件几乎同时触发了两次,从而产生了NavigationCancel 事件。
【讨论】: