As I see all these solutions relay to route.snapshot
and try to combine NavigationEnd action with it. But if you try to access the page – it is not fired with the first NavigationEnd
by router.events
. Also snapshot fires parent route, not a child route. so first you could use child route, but it will be also not fired as first…
this.router.events.pipe(
filter((event) => event instanceof NavigationEnd),
map(() => this.aRoute.snapshot),
map((route) => {
while (route.firstChild) {
route = route.firstChild;
}
return route;
})
)
so BEST solution for me with first fire on proper current route is using router.events
+ router.url
with one type NavigationEnd
:
this.router.events
.pipe(
filter((event) => event instanceof NavigationEnd),
startWith(this.router)
)
.subscribe((event: NavigationEnd) => {
// there will be first router.url - and next - router events
})