Я использую 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 не срабатывает.
Любая идея почему?