canActivate не вызывается второй раз, когда внутренняя наблюдаемая испускает другое значение - PullRequest
0 голосов
/ 23 апреля 2020

Я использую combineLatest (который объединяет значения из всех наблюдаемых, передаваемых в качестве аргументов) в методе canActivate.

Насколько я понимаю, всякий раз, когда запускается какая-либо из наблюдаемых, canActivate Наблюдаемые потребности в огне. Но этого не происходит

В моем AuthorizationGuard у меня есть следующий метод canActivate -

public canActivate(route: Route): Observable<boolean> {
    return combineLatest(this.service1.checkRoles(route.routeConfig.data.roles),
                         this.service2.serviceLoadedSub).pipe(
                         map(([isAuthorized, permissions]) => {

        console.log('permission in auth guard');
        console.log(permissionSet);

        // some auth checks
        return isAuthorized;
}

service1 checkRoles-

public checkRoles(roles: string[]): Observable<boolean> {
    return this.existingRoles.pipe(
      map(roleMap => {
         // perform some checks

         return true;

      })
    );
  }

service 2 -

export class Service2 {
     public serviceLoadedSub: BehaviorSubject<Set<string>> = new BehaviorSubject<Set<string>>(null);

     constructor (private restService: RestService) {
          this.resService.get('url-info').subscribe(data => {

               serviceLoadedSub.next(new Set(data));
          }
      }
}

Итак, когда загрузка службы 2 завершается ... субъект поведения снова запускается.

Но по какой-то причине наблюдаемое в canActiavte не срабатывает.

Любая идея почему?

...