Я очень плохо знаком с RxJS, поэтому я не совсем уверен, какой вопрос мне следует задавать здесь.У меня есть служба, которая возвращает наблюдаемое логическое значение:
@Injectable
export class UserService {
private isLoggedInSubject = new ReplaySubject<boolean>(1);
public isLoggedIn = this.isLoggedInSubject.asObservable();
}
В охраннике маршрута Angular 6 я передаю это значение, чтобы предотвратить доступ к маршруту:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isLoggedIn.pipe(take(1));
}
Как я могу взятьэто значение, и вернуть наблюдаемый на основе результата?Я пробовал несколько вариантов чего-то подобного, но, похоже, не хватает какой-то фундаментальной концепции, поскольку это должно быть довольно распространенным явлением.
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
const isLoggedIn = this.userService.isLoggedIn.pipe(take(1));
return isLoggedIn.[???something????](x => {
if (x) {
console.log('is logged in');
return Observable.of(true);
} else {
console.log('is not logged in ');
return Observable.of(false);
}
});
}