2017-08-04 2 views
0

私はすべてのルート(親ルート上)にあるガードをcanActivateしています。最初のリンクに行くと正しく動作しますが、ルートを変更すると動作しません。 ガードはログインしているユーザーに関するものです(私がログインしているAPIを返す場合はtrue、そうでなければサインインページにリダイレクトします) 私は何をすべきですか? ありがとうcanActivateガードはリフレッシュ後にのみ動作します

答えて

2

定義したのと同じガードで、CanActivateChildインターフェイスを実装し、同じロジックを呼び出します。あなたのルートでは、CanActivateとCanActivateChildの両方を定義します。あなたのルーティング

let routes:Routes = [ 
{ 
    path: 'myPath', 
    canActivate: [ MyGuard ] 
    canActivateChild: [ MyGuard ], 
    children: [ 
    { path: 'mychild1', .... }, 
    { path: 'mychild2', .... } 
    ] 
] 

あなたのガードで

@Injectable() 
export class MyGuard implements CanActivate, CanActivateChild { 

    constructor() {} 

    canActivate() { 
    // Your logic here to identify the value to return 
    } 

    canActivateChild() { 
    return this.canActivate(); 
    } 
} 

子ルートを保護する再angular.ioにこのガイドを読む:https://angular.io/guide/router#canactivatechild-guarding-child-routes

+0

それは動作しますありがとう –

関連する問題