Вы можете использовать маршрутизатор для прослушивания событий, как вы это сделали:
this.selectedRoute$ = this.router.events.pipe(
startWith(this.router),
filter(
(event) => event instanceof NavigationEnd || event instanceof Router
),
map((event: NavigationEnd | Router) => event.url),
map(path => this.map[path])
);
Вы можете адаптировать более позднюю карту, чтобы проверить, совпадает ли маршрут с вашим маршрутом, а затем подписаться, используя асинхронный канал в шаблоне, например:
<nz-tabset [nzSelectedIndex]="selectedRoute$ | async">
....
</nz-tabset>
Это также будет работать, когда вы обновите страницу или перейдете к этому маршруту вручную.
Редактировать: или подписаться на ActivatedRoute
, чтобы получить URL таким же образом. Используйте больше Observables, классные вещи!
Удачи!
Редактировать 2: Если вам нужен маршрут только для текущей области <router-outlet>
, вы можете использовать ActivatedRoute
следующим образом:
this.router.events
.pipe(
filter((event) => event instanceof NavigationEnd),
map(() => this.activated),
map((route) => {
while (route.firstChild) {
route = route.firstChild;
}
return route;
}),
switchMap((route) => route.url)
)
.subscribe((url) => console.log(url));
Это должно дать вам то, что вам нужно.