У меня проблемы с преобразованием BehaviorSubject логического значения в «правильную» наблюдаемую.
Фон:
У меня есть метод toValue (), который принимает разные типы и преобразует их вединый формат.Наблюдаемые также должны быть распознаны и напечатаны как таковые, что до сих пор работает.
Чтобы отреагировать на изменение логического значения, я реализовал ответ @ pashozator в следующем reddit-link .Таким образом, я передаю методу toValue () метод BehaviorSubject.asObservable (), который выглядит примерно так:
private isFinished: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);
toValue(this.isFinished.asObservable());
this.isFinished.next(true);
в методе toValue () преобразованный объект BehaviorSubject не распознается как Observable, BehaviorSubject или Subject,поэтому я не могу набрать его как Наблюдаемый.
Единственное отличие между "реальным" наблюдаемым и объектом из BehaviorSubject заключается в том, что атрибут source
не Observable
, а BehaviorSubject
.
// inside toValue()
//...
console.log(param instanceof Observable); // false for isFinished.asObservable()
console.log(param instanceof BehaviorSubject); // false for isFinished.asObservable()
console.log(param instanceof Subject); // false for isFinished.asObservable()
if (param instanceof Observable) {
observable = (param as Observable<T>);
}
// ...
Почему преобразованный объект поведения не распознается как наблюдаемый, и как можно распознать и обработать преобразованный объект поведения как наблюдаемый?Цель должна состоять в том, чтобы оба случая («реальные» и преобразованные наблюдаемые) обрабатывались немедленно и на них можно было подписаться позже.
РЕДАКТИРОВАТЬ:
Здесь работает plunkr, код находится внутри функции init app.component
https://plnkr.co/edit/MDxGS5kNgYNJaPmOaGXe?p=info