我有一个canDeactivate防护,检查路由(组件)是否可以取消激活。当我在路线上应用它时,它工作正常。
const routes: Routes = [
{ path: '', component: MyComponent, canDeactivate: [MyGuard] }
]
我希望这个canDeactivate guard能够应用于我的应用程序中的所有路由,无论它们是Lazy加载/ Pre Loaded / Loaded with app。
注意:我不想在我的所有路线上写这个守卫。
是否有任何Observable,EvenEmitter或者我可以通过遍历所有路线订阅和更新路线的东西?
此外,遍历所有路径的任何遍历代码都会有所帮助。
注意:子路径更改时不会调用CanDeactivate。
谢谢!
像这样的东西可以完成这项工作:
const routes: Routes = [
{ path: '', canDeactivate: [MyGuard], children: [
{ path: 'cmp1', component: MyComponent1 },
{ path: 'cmp2', component: MyComponent2 },
{ path: 'lazy', loadChildren: './modules/lazy/lazy.module#LazyModule' },
] },
];
只需添加一个带有该守卫的根路由,将所有其他路由添加为其子路由。