Jak wykryć zmianę trasy elementu potomnego ?. To jest to, czego próbowałem, ale widzę tylko składnik aplikacji śledzący zmianę trasy. Chcę być w stanie wykryć, kiedy adres URL zmienia się z np. #/meta/a/b/c do #/meta/a/b/c/d w komponencie MetaDetailView.Angular 2.0, jak wykryć zmianę trasy na komponencie potomnym
@RouteConfig([
{ path: '/', name: 'Home', redirectTo: ['Meta']},
{ path: '/meta/...', name: 'Meta', component: MetaMainComponent, useAsDefault: true},
...other routes...,
])
export class AppComponent {
constructor(private _router: Router) {
_router.subscribe((url) => console.log("app.url = " + url));
}
}
@RouteConfig([
{ path: '/*other', name: 'Detail', component: MetaDetailViewComponent, useAsDefault: true},
])
export class MetaMainComponent {
constructor(private _router: Router) {
_router.subscribe((url) => console.log("metamain.url = " + url));
console.log("MetaMainComponent")
}
}
export class MetaDetailViewComponent {
constructor(private _router: Router) {
_router.subscribe((url) => console.log("metadetail.url = " + url));
console.log("MetaDetailViewComponent")
}
}
Dzięki Jesper
To może działać (spróbuje później dzisiaj), ale jakiś pomysł dlaczego to nie działa bezpośrednio z routerem? –
Myślę, że dostajesz tylko odpowiednią instancję 'Routera 'wstrzykiwaną na komponentach biorących udział w routingu. Możesz jednak spróbować użyć '_router.root.subscribe (...)'. –
Udało mi się uzyskać tę funkcję przy użyciu możliwej do zaobserwowania usługi globalnej, zgodnie z sugestią. Nadal nie rozumiem, dlaczego nie mogę zasubskrybować bezpośrednio routera w komponencie potomnym. Znalazłem ten artykuł o dodawaniu obserwowalnej usługi. https://coryrylan.com/blog/angular-2-observable-data-services –