いくつかのルート(例えば '/ profile')に対してlogin-guardを使用しました。Angular2ルータはログアウト後にcanActivateする
canActivate() {
if (this.user.islogin) return true;
this.router.navigate(['']);
}
ログインしていない場合は、メインページにリダイレクトされ、一部のルートへのアクセスが試行されます。それはうまく動作します。 ユーザーは任意のページからログアウトできます。私は、次の振る舞いをアプリケーションに持たせたい: ユーザーが '/ profile'ページにアクセスして 'logout'をクリックすると、canActivate()メソッドによってメインページにリダイレクトされるはずです。しかしこの場合、このメソッドは呼び出されません。 canActivate()(ページをリロードする、手動で呼び出す)を実行するにはどうすればよいですか? 私のログアウト方法:
logout() {
localStorage.removeItem('auth_token');
this.islogin = false;
}
は、私は方法をログアウトするthis.router.navigate([this.router.url]);
を追加しようとしましたが、結果は同じです。 ページをリロードする場合のみ、angular2が私をリダイレクトします。 正しい方法は何ですか?
問題は、あなたがそのガードを必要としないルート上にログアウトする場合、それはだということです走るつもりだ、それは間違っている –