为什么使用路由后卫-canActivate,但使用不同的查询参数浏览相同的网址后不会触发:
在app.module中:
- name: Setting up Apache (2/2)
lineinfile:
path: /etc/opt/rh/rh-php56/php.ini
regexp: '^session.save_path ='
line: "session.save_path = '{% for frontend in frontends %} tcp://{% frontend %}:11211,{% endfor %}'"
在ListComponent中:
const appRoutes: Routes = [
{
path: '', component: MainPageComponent, canActivate: [MyGuardService],
children: [
{ path: 'MyList', component: ListComponent }
] .....
RouterModule.forRoot(
appRoutes,
{
onSameUrlNavigation: 'reload'
}
),
当我运行http://localhost:4200/MyList?id=24时 canActivate防护(MyGuardService)着火了。
我在运行的ListComponent中有一个click事件:
constructor(private router: Router) {
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
}
,然后使用新ID重新加载页面, 但是-canActivate防护(MyGuardService)不会再次触发。 为什么?? (我使用的是角度5)
答案 0 :(得分:1)
您可以将属性“ runGuardsAndResolvers”设置为您的路由配置。
允许这些值:
export declare type RunGuardsAndResolvers = 'paramsChange' | 'paramsOrQueryParamsChange' | 'always';
赞:
{ path: 'MyList',
component: ListComponent,
runGuardsAndResolvers: 'paramsOrQueryParamsChange' }