我现在对造成这个错误的原因感到困惑.我试图压缩7 Observables的结果,如:
var zipped$ = Observable.zip(
Observable.of({prop1:1}),
Observable.of({prop2:2}),
Observable.of({prop3:3}),
Observable.of({prop4:4}),
Observable.of({prop5:5}),
Observable.of({prop6:6}),
Observable.of({prop7:7})
);
Run Code Online (Sandbox Code Playgroud)
然后将它们与mergeAll()和reduce()合并为:
var reduced$ = zipped$.mergeAll().reduce((acc,val) => Object.assign({},acc,val));
reduced$.subscribe(final => console.log(final));
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误:'{}'上的"属性'减少'不存在"
增加混乱:
如果我使用6个值,它可以正常工作.
如果observable都返回原语,那么它可以正常工作.
如果我将此函数添加为我的zip中的最后一个参数:
function(...args: any[]) {
// I have no ieda why I need this hack, but the zip fails without it.
return args;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.
这是RxJS中的错误吗?我错过了关于zip实现的一些内容吗?这是一个角度编译器吗?没有多少搜索文档显示了对zip参数数量的限制.任何见解都表示赞赏.
谢谢
编辑:对于任何发现此事的人.
最好的解决方法是将observable放在一个数组中并将其作为单个参数提供,如:
var zipped$ = Observable.zip(...[
Observable.of({prop1:1}),
Observable.of({prop2:2}),
Observable.of({prop3:3}),
Observable.of({prop4:4}),
Observable.of({prop5:5}),
Observable.of({prop6:6}),
Observable.of({prop7:7})]);
Run Code Online (Sandbox Code Playgroud)
这也很好.编辑:数组提要停止工作,现在需要使用传播运算符和数组.
我在服务中有以下方法来注册数据BehaviourSubject。
regFieldsModules(fieldsModules?, field?: Field) {
// Using the previously stored data from the memory
if (fieldsModules) {
this.fieldMod = fieldsModules;
}
// Stop processing if fieldModules is null/ undefined
if (!this.fieldMod) {
return;
}
const groupFields = groupBy(this.fieldMod, 'id');
const uniqueFields: Field[] = removeDuplicates(this.fieldMod, 'id');
// Find the default field and assign it to the field
if (uniqueFields && !field) {
for (const f of uniqueFields) {
if (f.isDefault) {
field = f;
}
}
this.fields.next(uniqueFields);
}
this.field.next(field); …Run Code Online (Sandbox Code Playgroud)