Ngrx登出路由的两个后卫不会触发第二个

我有这些路线:

{
    path: 'admin',canLoad: [AuthGuard,accountGuard],loadChildren: () =>
      import('./features/admin/admin.module').then(m => m.Adminmodule),data: { preload: false }
  },{
    path: 'auth',loadChildren: () =>
      import('./features/auth/auth.module').then(m => m.AuthModule),data: { preload: false }
  }

登录时,两者均被触发,但是在管理区域中,我要注销 删除身份验证和帐户状态,如果我再次登录而没有刷新,则重定向到身份验证路由,仅触发第一个。 我尝试使用

onSameUrlNavigation: 'reload'

runGuardsAndResolvers: 'always'

但我仍然有相同的行为。

有什么想法吗?

NB 我也尝试过放置一个简单的console.log 在accountGuard之类的

canLoad(): Observable<boolean> {console.log('account)}

但是在第二次登录时我没有看到任何消息 在开发工具中

ttmax_1 回答:Ngrx登出路由的两个后卫不会触发第二个

根据有角网站的定义-“ CanLoad是一个接口,类可以实现该接口,以决定是否可以加载子级”。

在加载路由/子代时,CanLoad防护将返回true,然后,一旦加载,将不会再次调用该防护。每次导航到路线时,CanActivate的职责就是进行此类检查。我建议实施CanActivate并分配需要在登录时运行的防护。

这也是指向github的链接,Angular团队已在其中实现了此功能-https://github.com/angular/angular/commit/8785b2bf6db8c3ecc4bd5edcf667d5f2f53f5271

本文链接:https://www.f2er.com/3154231.html

大家都在问