我有一個工作的angular2後衛,其中canActivate()
調用isLoggedIn()
的服務並返回一個承諾,然後解析並處理相應的路由。否定後衛承諾的結果
但是,我試圖做相反的事,看看用戶何時未登錄,並且它不工作。
我想這麼簡單的東西(添加操作!),希望它會工作:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService) {}
canActivate() {
return !this.authService.isLoggedIn();
}
}
然而,這總是返回falsey值和路徑從未激活。
這是我isLoggedIn()
功能的相關摘錄:
isLoggedIn(): Promise<Boolean> {
var component = this;
return new Promise((resolve, reject) => {
component.queryForUser((user) => {
resolve(user != null);
});
}
});
}
如果用戶不等於null
,那麼他登錄並承諾與真正的解決。否則,錯誤。
雖然我可以簡單地添加一個參數指定我找哪個狀態,甚至創造一個isNotLoggedIn()
功能,具有相同的邏輯,但倒,我問,有沒有辦法否定的承諾的決心的價值canActivate()
?
將承諾視爲承諾。 '.then(...)' –