我试图在任何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
销毁后的下一条路线。
答案 0 :(得分:3)
好的,我使用了routerState
快照来验证下一条路线:
ngOnDestroy(): void {
if (this._router.routerState.snapshot.url.indexOf('site-preview') > -1) {
console.log('Hello, from needed route!');
}
}
但如果有一种更清晰的方式我会很高兴知道。