2017-07-05 7 views
0

私はアプリケーションコンポーネントにインポートする次のルーティングを持つ負荷に呼ばれています。私は私が初めてでアプリケーションを開いたり、ブラウザにアドレスを書くときAuthGuardが呼び出されたことに気づいたが、私は、URLを変更するには、私のメニューを使用した場合、その後AuthGuardは呼び出されません。角2 CanActivateだけ

<a routerLink="/cars"> 

私が間違ってやっていますか?

AuthGuard:

@Injectable() 
export class AuthGuard implements CanActivate { 
    constructor(private authService: AuthService, 
       private router: Router) {} 

    canActivate() { 
    if (!this.authService.authenticated) { 
     this.router.navigate(['/auth/login']); 
     return false; 
    } 
    return true; 
    } 
} 
+0

「AuthGuard」のコード? –

+0

@TouqeerShafi AuthGuard自体に関連するとは思わないが、私は質問を更新した。 – user348173

+0

おそらく['canActivateChild'](https://angular.io/api/router/CanActivateChild)はあなたが望むことをします。 –

答えて

3

CanActivateは親だけの空のルート上に設定されていることが表示されます。子ルート間をナビゲートするときに再度実行する場合は、代わりにcanActivateChildを使用することを検討してください。

+0

あなたは正しいです。ありがとう。 – user348173

関連する問題