Как вернуть значение при использовании трубы и карты, как в этом сценарии:
return this.service.someEvent().pipe(
map(x => {
return this.service.someValue;
})
)
, но значение никогда не возвращается, так как никогда не добавляется к событию, если я использую его следующим образом:
const a = this.service.someEvent().pipe(
map(x => {
return this.service.someValue;
})
)
return a.subscribe();
я получаю сообщение об ошибке (я знаю, что это неправильно).
TS2322: Type 'Subscription' is not assignable to type 'boolean | Observable<boolean> | Promise<boolean>'. Type 'Subscription' is not assignable to type 'Promise<boolean>'. Property 'then' is missing in type 'Subscription'.
Так что мне нужен способ вернуть значение.
ОБНОВЛЕНИЕ: лучшее описание (янеобходимо продублировать этот код с последней версией rxjs):
canActivate(next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.service.something().map(x => {
if (x) {
return true;
} else {
return false;
}
})
}
нужно сделать это с картой внутри канала (как я понял).