Использование элемента @ ngrx / store в Angular AuthGuard - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь использовать элемент из ngrx / store в моей authguardService.Когда маршрутизация доходит до точки, где она проверяет canActivate, она работает правильно, но когда элемент изменяется, защитник маршрута не меняет свой вывод, и функция canActivate все равно возвращается, даже если она должна вернуть false.

Код для функции canActivate:

canActivate(): Observable<boolean> | Promise<boolean> | boolean {
    return this.store.pipe(
      select('account'),
      map((account) => {
        console.log('account', account);
        if (account.agb === true) {
          return true;
        } else {
          this.router.navigate(['/agb']);
          return false;
        }
      }),
      take(1)
    );
  }

Маршрутизация:

{
        path: '',
        canActivate: [BesucherGuardService],
        children: [
          { 
            path: 'offers',
            component: BesucherTestComponent
          }
        ]
      },
      {
        path: '',
        canActivate: [AuthGuardService, AgbGuardService, LernenderGuardService],
        children: [
          {
            path: 'offers',
            component: LernenderTestComponent
          }
        ]
      },

Как видно из приведенного выше кода, маршрут / предложения определены два раза, один для вас, когда выBesucher и один, когда вы Lernender. К сожалению, даже после того, как account.role изменился на LERNENDER в магазине, он все еще соответствует маршруту, потому что BesucherGuardService, похоже, не знает об изменении переменной account.role.

Как я могу это исправить?

...