I'm loading a books module with the following routing configuration (src/app/index.ts
)-请注意,这是一个stackblitz链接-现在可以通过在答案中实施此修复程序来起作用-打破它,可以从“图书模块”路由中删除authguard:
{
path: 'books',
loadChildren: './books/books.module#BooksModule',
canActivate: [AuthGuard],
},
books模块(src/app/books/index.ts
)中的路由如下所示:
export const routes: Routes = [
{ path: '', component: CollectionPageComponent },
];
由于某些原因,加载此路由会关闭AuthGuard / CanActivate保护不会触发。其中有一条日志记录语句,用于跟踪何时触发。
如果该路线已被注释掉,则这样:
export const routes: Routes = [
//{ path: '', component: CollectionPageComponent },
];
然后,守卫触发。有想法吗?
答案 0 :(得分:2)
问题是authguard需要存在于您的BooksModule
路由定义中。
#in books/index.ts
export const routes: Routes = [
{ path: '', component: CollectionPageComponent, canActivate: [AuthGuard] },
];
然后您可以从app / index.ts中删除canActivate
答案 1 :(得分:1)
您只能对组件使用canActivate
保护。如果要在延迟加载的模块上设置防护,请使用canLoad
防护。