canActivate не запускается после изменения параметров запроса - PullRequest
1 голос
/ 13 марта 2019

Почему средство защиты маршрута - может активировать, а не срабатывать после перехода по одному и тому же URL с разными параметрами запроса:

в app.module:

const appRoutes: Routes = [
  {
    path: '', component: MainPageComponent, canActivate: [MyGuardService], 
     children: [
      { path: 'MyList', component: ListComponent }
    ] .....

RouterModule.forRoot(
      appRoutes,
      {
        onSameUrlNavigation: 'reload'
      } 
    ),

в ListComponent:

constructor(private router: Router) {
    this.router.routeReuseStrategy.shouldReuseRoute = () => false;
  }

когда я бегу http://localhost:4200/MyList?id=24 canActivate guard (MyGuardService) - это огонь.

У меня есть событие click в ListComponent, которое запускается:

this.router.navigate([`/MyList`], { queryParams: { id: '25'} });

и страница перезагрузится с новым идентификатором, но - защита canActivate (MyGuardService) снова не срабатывает. Зачем ?? (Я использую угловой 5)

1 Ответ

1 голос
/ 13 марта 2019

вы можете установить свойство 'runGuardsAndResolvers' для вашей конфигурации маршрута.

Допустимы следующие значения:

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

Например:

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