Ввести службы Router
и ActivatedRoute
.
Когда начнется навигация, пройдите по активированному маршруту, чтобы найти розетку.
Вы можете использовать следующий код в качестве начального точка.
this.router.events
.pipe(
filter(event => event instanceof NavigationStart),
map(() => this.activatedRoute),
map(activatedRoute => {
while (activatedRoute.firstChild !== null) {
activatedRoute = activatedRoute.firstChild
}
return activatedRoute
}),
filter(activatedRoute => activatedRoute.outlet === "primary"),
mergeMap(activatedRoute => activatedRoute.url),
)
Примечание: Этот код будет работать, даже если вы напишете его в своем компоненте root. Активированный маршрут не только обозначает маршрут для конкретного компонента, который его ввел. Активированный маршрут представляет собой все дерево маршрутов, которое привело к вашему текущему маршруту.
В вашем root компоненте активированный маршрут является ссылкой на маршрут, который активировал компонент, то есть «/». Однако вы можете перемещаться вниз по дереву маршрутов, чтобы посетить другие маршруты (если они есть).
Точно так же в других компонентах активированный маршрут является ссылкой на маршрут, который активировал этот компонент. Но вы можете путешествовать вверх и вниз, чтобы посетить другие маршруты.