2017-02-23 3 views
2

Ich verwende die folgende Vorlage Anweisung der Klasse eines Laschenelements zu bestimmen:Angular 2 Routing: Referenzierung Variable in Router.url

<li [class.active]="router.url == '/member-view/member-profile/' + routeParamVar"> 

Die Klasse aktiv sein soll, unabhängig davon, was die Route Parameter ist. Aber im Idealfall kann ich den spezifischen Route-Parameter in die Router.url-Anweisung einfügen. Dies ist der erste Teil dieser Frage und es scheint ziemlich geradlinig, aber ich bin mir nicht sicher, wie es geht.

Eine Komplikation, glaube ich, ist, dass dieses Element in der übergeordneten Vorlage der Ansicht mit der tatsächlichen Route param ist. Es scheint nicht, wie ich in der Lage bin, die ActivatedRoute param auf eine Variable in der Komponente wie folgt zu vergeben:

this.uid = this.activeRoute.snapshot.params['uid'] 

ich mit einem Service oder @ViewChild messed um die uid von dem Kind bekommen haben zu den Eltern, aber habe es noch nicht ganz herausgefunden. Meine Frage ist also zweigeteilt:

Erstens, wie kann ich die Route Param einer untergeordneten Komponente zu einer Variablen in der übergeordneten Komponente zuweisen?

Zweitens, wie bekomme ich diese Variable in der Router.url in der Vorlage Anweisung?

Antwort

1

So ist der Weg, um die Variable in der Router.url zu verweisen ist, wie ich in der Frage erraten:

[class.active]="router.url === '/member-view/member-profile/' + uid" 

war ich auch in der Lage die Strecke param des Kindes zu bekommen mit:

this.activeRoute.firstChild.params 
.subscribe(params => { 
    this.uid = params['uid'];