Angular 6:即使导航到同一条路线,如何获取路由器事件

时间:2018-06-19 14:31:40

标签: angular

即使导航到同一条路线也如何获得路由器事件,例如我有3条路线

  • route1
  • route2
  • route3

在从相同路由的路由1导航到route1时,如何捕获来自Router的事件。

3 个答案:

答案 0 :(得分:3)

从告诉重新加载路由开始(即重播可观察的内容):

this.router.onSameUrlNavigation = 'reload';

然后,订阅路由事件(并可选地检查事件是否是周期的最后一个,否则,您会做很多事情):

this.router.events
  .pipe(filter(event => event instanceof NavigationEnd))
  .subscribe(event => {...});

答案 1 :(得分:0)

我明白了,还是谢谢,我使用了以下配置

@NgModule({
    imports: [RouterModule.forRoot(appRoutes, {onSameUrlNavigation: 'reload'})],
    exports: [RouterModule]
})
export class AppRoutingModule {

}

答案 2 :(得分:0)

您可以使用以下任何方式解决此问题。

1)只需在构造函数中添加以下行

this.router.onSameUrlNavigation = 'reload';

这与RouterModule.forRoot()和RouterModule.forChild()都可以使用。

2)下面的代码行仅适用于RouterModule.forRoot(),不适用于RouterModule.forChild()。因为RouterModule.forChild()仅接受一个参数。

@NgModule({
    imports: [RouterModule.forRoot(appRoutes,{onSameUrlNavigation: 'reload'})],

    exports: [RouterModule]
})

export class AppRoutingModule {
}