我有来自 BE 的权限 DTO,它决定了用户可以访问的应用程序部分。使用 NgRx 选择器我想在 CanLoad 守卫中使用它,但我无法让它工作。
路线.ts
{
path: 'acquisition',
canLoad: [AcquisitionGuard],
loadChildren: () => import('./acquisition/acquisition.module').then(m => m.AcquisitionModule),
pathMatch: 'full',
},
守卫:
canLoad(route: Route, segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean {
console.log('canLoad guard'); //never fires
return this.store.select(fromPermission.canAcess);
}
出于某种原因,这个守卫永远不会触发(尝试使用console.log
and debugger
)。当我将其更改为canActive
并在“父”路由文件中执行时,它也不会触发。它触发的唯一时间是我将其更改为canActive
并将其移动到“子”routes.file
获取.routes.ts
{
path: 'acquisition',
canActive: [AcquisitionGuard], //This is the only time I'll get some response from the guard
component: AcquisitionComponent,
children: [...],
},
编辑: 看起来这是由这样一个事实引起的,一旦模块被加载,'CanLoad' 守卫就不会再次被触发。是否有可能 Electron 一次加载所有内容,因此无法调用该守卫?