Ich habe zur Zeit einen Router mit (nur relevant) bekam zwei Routen:Router navigate scheint nicht Komponente sich zu ändern
{ path: ':org', component: OrgComponent, resolve: [ OrgResolver ] }
{ path: '', component: NotFoundComponent },
Der Resolver ist ziemlich geradlinig:
constructor(private router: Router, private orgService: OrgService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Org> {
return this.orgService.getOrgData(route.params['org']).map(function (org) {
if (org === null) {
this.router.navigate['/'];
return null;
} else {
return org;
}
});
}
Wenn Ich gehe direkt zu /
, ich traf die NotFoundComponent. Wenn ich zu einer Route wie /invalid
gehe, die OrgService als null zurückgibt, also ungültig, leitet die App an /
weiter, aber die Komponente bleibt gleich. Und weil es keine :org
im Weg ist, schlägt der API-Aufruf (I überprüfen, um sicherzustellen, dass Sie in einer Reihe von irgendeiner Art passieren) und die App stürzt mit diesem Fehler:
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'navigate' of undefined
Ich kann den Absturz Teil beheben , aber was ich erwarte ist, dass wenn du an einen ungültigen Ort gehst, ich dich zu einem anderen Ort weiterleiten möchte. Auf lange Sicht wird dies ein 404-Standort sein, aber im Moment versuche ich nur, den Router in den Griff zu bekommen.
Bin Verständnis ich nicht etwas darüber, wie navigate funktionieren soll?
Für Routen mit Pfad '' '' und keine Kinder verwenden 'pathMatch: 'full'' –
Sie scheinen nicht' navigate' Methode richtig aufzurufen: 'this.router.navigate (['/']); ',' nicht this.router.navigate [ ‚/‘]; ' –
@VohidjonKarimjonov Sorry, dass Fehler kam, während ich ein paar Tests geschrieben, um herauszufinden, was los war. Mein ursprünglicher Code hatte es definitiv als Funktion, nicht als Array. – RhoVisions