Wie zu bekommen :param id der Kind-route von parent-Komponente in Angular2
Ich versuche zu bekommen, die : - id, param, definiert in
RouterModule.forRoot([
{
path: 'orders',
component: ListComponent,
children: [
{
path: 'view/:id',
component: ViewComponent
},
]
}
])
vom ListComponent.
Ich bereits versucht:
route: ActivatedRoute
route.params.subscribe(params => {
let id = +params['id'];
})
vom ListComponent, aber die params-array ist leer, ich nehme an, weil die id :der Parameter gehört zu viewComponent nicht listComponent
Wie bekomme ich die id param in listComponent?
InformationsquelleAutor Fernando Popoca Ortiz | 2017-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
firstChild
- Eigenschaft oder dieActivatedRoute
zu bekommen, der Kind-route:Ich benutzte route.snapshot.firstChild, nicht-route.firstChild.snapshot Auch überprüfen firstChild definiert sich in Erster
es funktioniert, aber ich erhalte eine Fehlermeldung in der Konsole ilke " - Fehler FEHLER: ExpressionChangedAfterItHasBeenCheckederror: Ausdruck geändert hat, nachdem es überprüft wurde. Vorheriger Wert: 'true'. Aktueller Wert: 'false'"
genial, hat mir sehr geholfen..
Erstaunlich, Sparte ich viel Zeit. Danke!!!
InformationsquelleAutor Günter Zöchbauer
Um das Kind params innerhalb der übergeordneten Komponente, die ich verwendet, die firstChild-Eigenschaft ActivatedRoute, weil ich nur auf der Kind-route
Beste Antworten bisher, es umfasst das abonnieren zeigen.
InformationsquelleAutor Fernando Popoca Ortiz
Rekursiv Suche nach Kind params wird nicht immer bekommen Sie die params die Sie suchen. Speziell beim verschieben von Routen rund um.
Statt, eine RxJS
ReplaySubject
können verwendet werden, um die Veröffentlichung der aktuellen child-id.Erstellen Sie einen neuen service:
Importieren auf die Kind-Komponente und abonnieren Sie den replay-Thema:
Importieren des Dienstes auf der übergeordneten Komponente und die Verwendung des async-pipe zu abonnieren, um den Kind-Wert:
Hier ist ein funktionierendes snippet: https://stackblitz.com/edit/angular-b8xome (hinzufügen /Kind/42, um die browser-app Vorschau, um zu sehen, dass es funktioniert)
Alternativ definieren Sie die Komponenten, die als Geschwister und fügen Sie den Eltern als componentless route, ex.: https://vsavkin.com/the-powerful-url-matching-engine-of-angular-router-775dad593b03 unter "Geschwister-Komponenten Mit Gleichen Daten"
ReplaySubject wird merken, das bisherige Ergebnis, so dass die observable heißen für alle zukünftigen Abos. Dies ist hilfreich, wenn Sie sich auf das beobachtbare in mehr als einem Ort, und wollen Zugriff auf die zuvor schob Ergebnisse.
InformationsquelleAutor golfadas
Sie können immer Graben durch die
route.firstChild.params['id']
wenn es nur ein Kind Weg oder so etwas wieroute.children[0].children[1].params['id']
zu Graben, durch mehrere Ebenen mit Hilfe der Klammer-notation, um den Zugriff Geschwister-Routen. Es ist ein bisschen von Versuch und Irrtum, wenn es um die Suche nach der richtigen Ebene ist.InformationsquelleAutor run yards