Eckige ActivatedRoute Daten liefert ein leeres Objekt
Habe ich eine route eingetragen mit einigen Daten:
const routes: Routes =
[
{path: 'my-route', data: { title: 'MyTitle' }, component: MyComponent},
];
und ich versuche, auf der Strecke ist-Daten mit ActivatedRoute
:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({...})
export class MyComponent implements OnInit {
private routeData;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.routeData = this.route.data.subscribe((data) => {
console.log(data); //this is returning an empty object {}
});
}
}
aber für einige Gründe, warum data
ist ein leeres Objekt.
Wie dieses problem zu lösen?
- hast du das probiert.route.snapshot
- ja, Gleiches Ergebnis (leeres Objekt)
- Check this out: stackoverflow.com/a/57447329/5366641
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit: das problem ist, dass ich versuchen auf die ActivatedRoute aus einer Komponente, die außerhalb die
<router-outlet>
. So wie es aussieht, dass dies ist das beabsichtigte Verhalten.Aber ich denke immer noch, dass meine Antwort unten kann nützlich sein, um jeden, der versucht zu erreichen, die gleiche Sache.
Ich fand einen workaround auf GitHub (Dank manklu), die ich verwendet, um zu erreichen, was ich brauchte:
tut diese Weise
this.routeData
halten wird die route, die Daten, die ich brauchte (in meinem Fall die Seitetitle
).<router-outlet></router-outlet>
. Prost!this.router.events.subscribe(val => { if (val instanceof RoutesRecognized) { var strId = val.state.root.firstChild.params["id"]; }});
Ich weiß nicht, die version gesprochen, aber als der Winkel 6,
dieser arbeitete für mich:
(Natürlich Dank shinDath)
Dies ist ein Teil von meinem code (HINWEIS: ich bin mit Winkel 8):
So Daten ist "versteckt" unter ActivatedRoute.snapshot.routeConfig.Kinder-Array. Jedes Kind enthält, unter anderem, Daten.
In meinem Fall Daten konfiguriert ist, routing.Modul, z.B.:
Unten sollte funktionieren: