当我更新到RxJS 6时,我的应用程序坏了。我可以正常使用它,但是这种方法让我很困惑。
以前,我们有一系列可观察的对象被flatMapped,然后像这样使用CombineLatest:
const newObservable = myArrayOfObservables
.flatMap(observables => {
return Observable.combineLatest(observables);
});
我可以订阅newObservable并从其他所有对象中获取最新输出。
现在我正在尝试执行以下操作:
const mergedList$ = chatList$.pipe(
mergeMap(res => {
return combineLatest(res);
}));
这使我成为那些真正漫长而费解的人之一
类型'(res:Observable <{$ key:string;}> [])=> OperatorFunction <{},[{},Observable <{$ key:string; }>]>'不能分配给类型'(value:Observable <{$ key:string;}> [],index:number)=> ObservableInput <{}>'的参数。 键入'OperatorFunction <{},[{},Observable <{$ key:string; }>]>'不能分配给类型'ObservableInput <{}>'。 键入'OperatorFunction <{},[{},Observable <{$ key:string; }>]>”不能分配给“ Iterable <{}>”类型。 类型'OperatorFunction <{},[{},Observable <{$ key:string;类型中缺少属性'[Symbol.iterator]'。 }>]>'。
坦白地说,我的阅读障碍使我无法解析。
如果我只返回上面的res,然后尝试
const mergeCombo = combineLatest(mergedList$);
现在mergeCombo不是可观察的。而是一个
OperatorFunction <{},[{},Observable <{ $ key:字符串; }>]>
值得注意的是,我原来的可观察对象是由AngularFireObject.snapshotChanges()发出的
答案 0 :(得分:7)
您没有显示如何导入combineLatest
。看起来好像您正在将其导入为运算符一样,已经过时了。
确保以这种方式导入它:
import {combineLatest} from "rxjs";
然后您的原始代码应该可以正常工作:
const mergedList$ = chatList$.pipe(
mergeMap(res => combineLatest(res))
);