在 Angular 11 中,如果使用了路由守卫,则第一次访问时守卫会起作用,但第二次访问时守卫却不会再次起作用。这可能是因为第一次访问路由时,路由守卫已经被缓存了,第二次访问时并没有再次运行它。
要解决这个问题,可以在路由配置中设置runGuardsAndResolvers为always。这将确保每次路由访问时都会运行它们。例如:
const routes: Routes = [
{ path: 'example', component: ExampleComponent, canActivate: [AuthGuard], runGuardsAndResolvers: 'always' }
];
在这个示例中,AuthGuard 是一个实现了 CanActivate 接口的守卫类。通过设置runGuardsAndResolvers为always,确保每次访问路由时都会运行该守卫。
通过这种方式,您可以确保每次访问路由时都会运行守卫,并避免它们被缓存的问题。