Ich habe eine funktionierende angular2 Wache mit einer canActivate()
, die einen Dienst für isLoggedIn()
aufruft und ein Versprechen zurückgibt, das dann löst und die Route angemessen behandelt wird.Negieren des Ergebnisses eines Versprechens in einer Wache
Allerdings versuche ich das Gegenteil zu tun, zu sehen, wenn der Benutzer nicht angemeldet ist, und es funktioniert nicht.
habe ich versucht, etwas so einfaches wie dies (das Hinzufügen eines Operator!), Es funktionieren würde, der Hoffnung:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService) {}
canActivate() {
return !this.authService.isLoggedIn();
}
}
Dies ist jedoch immer wieder einen Falsey Wert und die Route aktiviert nie.
Dies ist ein relevanter Auszug meiner isLoggedIn()
Funktion:
isLoggedIn(): Promise<Boolean> {
var component = this;
return new Promise((resolve, reject) => {
component.queryForUser((user) => {
resolve(user != null);
});
}
});
}
Wenn der Benutzer nicht gleich null
ist, dann ist er angemeldet und das Versprechen löst mit wahr. Sonst, falsch.
Während ich einfach einen Parameter hinzufügen könnte, um anzugeben, welchen Zustand ich suche, oder sogar eine isNotLoggedIn()
Funktion mit der gleichen Logik aber invertiert, frage ich, gibt es eine Möglichkeit, den Wert der Versprechung des Versprechens für zu negieren die canActivate()
?
Behandle ein Versprechen wie ein Versprechen. '.then (...)' –