首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rxjs组合了2个观测值,角度2

Rxjs组合了2个观测值,角度2
EN

Stack Overflow用户
提问于 2017-02-03 18:10:57
回答 2查看 8.8K关注 0票数 4

我有两个可观察到的,两个http电话:

代码语言:javascript
复制
itemList$:Observable<any[]>;
newItem$:Observable<any[]>;

ngOnInit(){
  itemList$ = this.http.getList(...some url...) // returns array of many items
}

createNewItem(){
  newItem$ = this.http.createNewItem(...some url...) //returns array of one item
}

我想从其他地方调用'createNewItem()‘函数,我希望将结果与当前的itemList$可观察结果合并成一个条目数组。

在html中,我有一个听itemList$的异步管道:

代码语言:javascript
复制
<div *ngFor="let item of itemList$ | async">{{item.name}}</div>

如何将newItem$合并到itemList$并让异步管道显示合并的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-03 19:59:12

您可以使用Observable.merge (我有RxJS版本5.0.1)

代码语言:javascript
复制
Observable.merge(newItem$, itemList$)
          .subscribe(response => {
              // Perform your action
          });

https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/merge.md

票数 9
EN

Stack Overflow用户

发布于 2017-02-03 18:44:33

您可以使用Subject而不是Observable,一旦您创建了一个新项,就将它交给主题并发出它。

代码语言:javascript
复制
itemList$:AsyncSubjct<any>;

createNewItem(){
  this.http.createNewItem(...some url...).subscribe(data => {
    this.itemList$.next(data);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42030469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档