小编bry*_*n60的帖子

Angular 2 RxJS Zip运算符是否对参数有限制?

我现在对造成这个错误的原因感到困惑.我试图压缩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)

这也很好.编辑:数组提要停止工作,现在需要使用传播运算符和数组.

javascript rxjs angular

6
推荐指数
1
解决办法
604
查看次数

每次组件加载时,数据订阅增加 1

我在服务中有以下方法来注册数据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)

rxjs angular angular-observable

1
推荐指数
1
解决办法
155
查看次数

标签 统计

angular ×2

rxjs ×2

angular-observable ×1

javascript ×1