多次调用 Angular 2+ ActivationEnd 事件回调

BBa*_*ger 5 angular angular-router

我看到一个订阅router.events产生三个调用,每个路由更改为回调函数,每个调用都报告instanceof eventActivationEnd.

console.log('This code runs only once, at site initialization.');
router.events.subscribe((event: RouterEvent) => {
    if (event instanceof ActivationEnd) {
        console.log('This should only log once per route change, but logs three times.');
    };
});
Run Code Online (Sandbox Code Playgroud)

我在 Github 上找到了这个线程,它似乎相关,但我很难相信这仍然是一个问题......

我正在使用 Angular 5 (5.2.10)。

更新:似乎每个路线段都会触发此事件...正在检查文档。

BBa*_*ger 5

看来我应该使用 NavigationEnd 而不是 ActivationEnd 来实现所需的结果。我应该知道这一点。我想我的眼睛没有注意到差异。

  • 但仍然使用 NavigationEnd 并不能解决我的问题。因为它被调用了两次。您找到解决方法了吗? (6认同)