私はisLoggedIn()
のサービスを呼び出し、約束を返して解決し、そのルートは適切に処理されるcanActivate()
という働きをしている働くangular2ガードを持っています。約束の結果をガードで否定する
しかし、私は逆の作業をしようとしています。ユーザーがログインしていないときに表示され、動作していない場合を参照してください。
私はそれが仕事と期待して、このような単純なもの(オペレータの追加を!)試してみました:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService) {}
canActivate() {
return !this.authService.isLoggedIn();
}
}
しかし、これは常にfalsey値を返し、ルートがアクティブにすることはありません。ユーザーは、その後、彼がログインしているnull
に等しくないと約束が真で解決する場合
isLoggedIn(): Promise<Boolean> {
var component = this;
return new Promise((resolve, reject) => {
component.queryForUser((user) => {
resolve(user != null);
});
}
});
}
:
は、これは私のisLoggedIn()
機能の関連抜粋です。それ以外は偽です。
私は単純に、私が探している状態を指定するためのパラメータを追加することもできますが、同じロジックを持ちながら反転したisNotLoggedIn()
関数を作成することもできますが、約束の解決の価値を否定する方法はありますか? canActivate()
?
約束どおりの約束をしてください。 '.then(...)' –