Angular 2 检查下一条路线 OnDestroy

mar*_*den 7 javascript typescript angular

我正在尝试对任何NavigationEnd路由器事件触发操作,除非在 a) 子路由之间导航;b) 在另一条特定路线上。

这是我的一部分app.routing.ts

// some other routes setup...

{ path: 'scrapers/:version', component: SingleScraperComponent, children: [
    { path: '', redirectTo: 'statistics', pathMatch: 'full' },
    { path: 'statistics', component: ScraperStatisticComponent },
    { path: 'targets', component: ScraperTargetsComponent },
]},

// some other routes setup...
Run Code Online (Sandbox Code Playgroud)

这是我的Router活动订阅SingleScraperComponent

// some component code

ngOnInit(): void {
    this._router.events.filter(event => event instanceof NavigationEnd).takeWhile(() => this.isAlive).subscribe(
        (event: NavigationEnd) => {
            console.log(event);
            if (event.url.indexOf('site-preview') === -1) {
               this._site.resetQuery();
            }
        }
    );
}

// some component code
Run Code Online (Sandbox Code Playgroud)

我也可以使用OnDestroy,但我需要知道SingleScraperComponent销毁后的下一条路线。

mar*_*den 10

好的,我已经使用routerState快照来验证下一条路线:

ngOnDestroy(): void {
    if (this._router.routerState.snapshot.url.indexOf('site-preview') > -1) {
        console.log('Hello, from needed route!');
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果有更清晰的方法,我将不胜感激。