ich zur Zeit auf Router Ereignisse melde mich an den Titel meiner Seite zu ändern, wenn Routen zu ändern, wie somehrere Artikel aus this.router.events.subscribe Erste()
this.routerSub$ = this.router.events
.filter(event => event instanceof NavigationEnd)
.map(() => this.activatedRoute)
.map(route => {
while (route.firstChild) route = route.firstChild;
return route;
})
.filter(route => route.outlet === 'primary')
.mergeMap(route => route.data)
.subscribe((event) => {
title = event['title']
? `${event['title']}`
: 'Default Title'
this.title.setTitle(title);
});
Mein Problem ist, dass bei bestimmten Szenarien, ich möchte den Titel auf einen Wert in URL (Teil einer Route) festlegen. Wie mache ich das hier? Ich weiß, dass ich die URL sowie Ereignisse nicht abonnieren kann, aber ich habe eine harte Zeit herauszufinden, was ich innen zuordnen kann.
Hier ist, was ich bin versucht
this.router.events
.filter(event => event instanceof NavigationEnd)
.map(() => {
return this.activatedRoute
})
.switchMap(route => {
return route.data.combineLatest(route.url, (data, url) => {
return data['title'] ? `Title: ${data['title']}` : url.join('');
});
})
Auf der .switchMap Linie versagt, Route vom Typ ActivatedRoute ist, ist route.data vom Typ Object und der Fehler ich auf dem combineLatest () Linie ist
route.data.combineLatest ist keine Funktion
Wollen Sie damit sagen, dass Sie sowohl 'events' und' url' beobachten wollen und irgendwie ihre Werte kombinieren? Wenn dies der Fall ist, könnte 'combineLatest' oder' withLatestFrom' helfen. –
Danke, dass Sie mir den richtigen Weg gezeigt haben. Also erstelle ich grundsätzlich ein beliebiges Objekt und weise ihm Ereignisse und URLs als Requisiten zu? Vielleicht würde mir eine kleine Probe helfen –