kątowego 4+
Jeśli umieścić następujący kod w macierzystym lub poziom górny komponentów takich jak AppComponent
to nie będzie działać. To działa tylko na dzieci lub niższy poziom składników, dla których już zdefiniowane dane niestandardowej trasy:
public constructor(private route:ActivatedRoute, private router:Router) {
console.log(route.snapshot.data['title']);
}
Tak więc, jeśli chcesz uzyskać dostęp do danych niestandardowych trasa globalnie od składnika dominującego lub poziom górny, aby uzyskać dostęp do zmiany w niestandardowych danych trasy musisz słuchać zdarzeń routera, w szczególności zdarzeń RoutesRecognized
lub NavigationEnd
. Pokażę dwie procedury z AppComponent
z dwóch zdarzeń:
Pierwsze podejście:
export class AppComponent implements OnInit, AfterViewInit {
constructor(private activatedRoute: ActivatedRoute, private router: Router) { }
ngOnInit() {
this.router
.events
.filter(event => event instanceof NavigationEnd)
.map(() => {
let child = this.activatedRoute.firstChild;
while (child) {
if (child.firstChild) {
child = child.firstChild;
} else if (child.snapshot.data && child.snapshot.data['custom_data']) {
return child.snapshot.data['custom_data'];
} else {
return null;
}
}
return null;
}).subscribe((customData: any) => {
console.log(customData);
});
}
}
Drugie podejście wykorzystuje:
this.router.events
.filter(event => event instanceof RoutesRecognized)
.map((event: RoutesRecognized) => {
return event.state.root.firstChild.data['custom_data'];
})
.subscribe(customData => {
console.log(customData);
});
Uwaga: Chociaż ostatnia jeden jest krótszy i zwykle działa, ale jeśli masz zagnieżdżone trasy, zachęcamy do skorzystania z pierwszego.
wygląda jak dup z http://stackoverflow.com/questions/38644314/changing-the-page-title-using -the-angle-2-new-router/38652281 # 38652281 –