Ich versuche einen Router Guard in Angular.js 2 (2.0.0-rc.4) (erstellt von angular cli) zu schreiben, der AngularFire (2.0. 0-beta.2), um den Anmeldestatus zu überprüfen und den Benutzer (anonym) anzumelden, wenn der Benutzer bereits angemeldet ist, bevor er in den Status zugelassen wird.Einen Route Guard schreiben, um auf Auth in AngularFire und Angularjs 2 zu warten
Mein Wächter-Code ist:
canActivate() {
/* This part is to detect auth changes and log user in anonymously */
this.auth
.subscribe(auth => {
if (!auth) {
this.auth.login();
}
});
/* This part is to listen to auth changes and IF there is an auth, resolves this guard with a true to let user in */
return this.auth
.asObservable()
.filter(auth => {
return auth ? true : false;
})
.map(x => {
console.log("TEST 1000");
return true;
});
}
Wenn ich die Anwendung ausführen, obwohl ich TEST 1000
Konsolenausgabe angezeigt, dass canActivate()
Zurückgeben eine true
meine Route nicht aktiviert ist.
Ich frage mich, ob es in meiner Logik fehlerhafte Denkweise gibt, oder gibt es irgendwelche guten Ideen, um dies intelligent zu debuggen.
Sie haben Recht! Mein Problem war in der Tat, es war nicht vollständig. Ich habe '.asObservable()' mit 'take (1)' geändert, um nur einen Wert zu erwarten und ihn danach zu vervollständigen, und es hat angefangen zu arbeiten! –