角度:改变单一路线会发出多个“导航结束”。事件

时间:2017-10-09 20:10:44

标签: angular typescript rxjs angular-router

我正在使用Angular 4,这是我需要捕获该路由的组件之一的代码,并重新加载页面。

ngOnInit() {
        this.router.events.subscribe((value) => {
          if (value instanceof NavigationEnd) {
             console.log(value);
          }
        });
    }

我的问题是我得到了多个' NavigationEnd'一条路线的事件。 对于某些路由,console.log甚至写入6,7个值。

怎么会发生这种情况?

1 个答案:

答案 0 :(得分:6)

我认为通过“重新加载页面”,您的意思是调用navigate this.router方法。如果是这种情况,这很可能与您每次创建此组件的实例时创建路由器事件的新观察者这一事实有关,但是不要在{{1}中处置生成的subscription循环。要解决此问题,您可以执行以下操作:

ngOnDestroy