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