ユーザが自分のアプリケーションにログインしていない場合、localStorageに 'userToken'が存在しない場合、ログインルートにリダイレクトしたいだけです。現在のナビゲーションをキャンセルしてルートコンポーネントから別の場所に移動することはできません
ユーザーがルート/customers
を入力すると、ローカルストレージにuserTokenが存在しないときにログイン画面にリダイレクトする必要があります。
App.component.ts
export class AppComponent
{
constructor(private routerService: RouterService, private router: Router, private authService: AuthenticationService)
{
if (!authService.isLoggedIn())
{
this.router.navigate(['/login']);
}
}
}
ルータNavigateメソッドが呼び出されますが、ログイン画面に移動されていない、なぜ?バックエンドの顧客データを取得しようとしていますが、サーバーの応答に401が表示されます。これは、ルートアプリケーションコンポーネントが実行された後のコードを意味します。
ナビゲートする前にトークンを削除する必要がありますか? curcularリダイレクトがあります –
あなたはrootコンポーネントでそれをやっていますが、アプリケーションがロードされてから1回しか実行されません。このhttps://angular.io/docs/ts/latest/api/routerのcanActivateを使用してください/index/CanActivate-interface.html –
そうですが、アプリコンポーネントのルート変更を購読するときにはうまくいくはずです。私はそれを試してみよう! – Pascal