Angular 2检查下一条路线OnDestroy

时间:2017-11-27 12:07:09

标签: javascript angular typescript

我试图在任何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...

以下是我在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

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

1 个答案:

答案 0 :(得分:3)

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

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

但如果有一种更清晰的方式我会很高兴知道。