Ich verwende AngularFire2. Dies ist, wie ich näher kam meinen AuthGuard
Service:canActivate reagiert nicht auf Änderung des Abonnements Angular 2 Router AngularFire2
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.af.auth.subscribe((auth) => {
if(auth == null) {
this.router.navigate(['/login']);
this.allowed = false;
} else {
this.allowed = true;
}
})
return this.allowed;
}
Der obige Code funktioniert, außer wenn ich besuche eine bewachte Seite direkt (i eingeben URL in Browser), ist es nicht die jeweilige Komponente zu laden, nachdem das Abonnement verrechnet wird zu wahr.
In Winkel 1 wurde durch die Überwachung der Route sichergestellt, dass etwas zuerst aufgelöst wird, bevor die Route geladen wird.
Es erscheint in Winkel 2, die Route lädt (ob wahr oder falsch, und wartet auf keine Antwort von der Leitung), daher zu dem Zeitpunkt der Subskription Wert als wahr zurückgibt, muss ich zu einer anderen Route gehen Dann komm zurück, bevor es funktioniert.
Was ist der richtige Weg, um meine Route in Angular 2 zu reagieren?
kommt zurück mit dem Fehler: 'Property 'Karte' existiert nicht auf dem Typ "AngularFireAuth". – Rexford
Sie müssen 'map' importieren. Suchen Sie Ihre Fehlermeldung ohne 'ßAngularDireAuth'' –
Auch damit, nach dem Import von' map', bekomme ich diesen Fehler: 'Fehler TS2322: Typ 'Observable' ist nicht zu Typ 'Boole''zuweisbar. –
Rexford