查询参数更改后canActivate不触发

时间:2019-03-13 13:14:25

标签: angular angular-ui-router

为什么使用路由后卫-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)

1 个答案:

答案 0 :(得分:1)

您可以将属性“ runGuardsAndResolvers”设置为您的路由配置。

允许这些值:

export declare type RunGuardsAndResolvers = 'paramsChange' | 'paramsOrQueryParamsChange' | 'always';

赞:

{ path: 'MyList', 
  component: ListComponent, 
  runGuardsAndResolvers: 'paramsOrQueryParamsChange' }