如何更新在异步管道中使用的Observable?

时间:2017-08-15 08:58:02

标签: angular rxjs observable

问题在于:我有一个简单的组件,它可以呈现一些"历史"消息。当加载app时,它会发出POST请求,获取数据并将数据设置为Observable,如下所示

this.messages$ = Observable.of(messagesAfterPOSTRequest);

其中public messages$: Observable<any>;

此数据通过异步管道在模板中呈现:

let message of messages$ | async

效果很好,但是......

我得到一些&#34;新消息&#34;通过websocket,所以我想更新上一​​步创建的列表。我正在尝试使用scan()

this.messages$ = this.messages$.scan((accMessage, numMessage) => {
        console.log("inside current mesages", accMessage, numMessage)
      });

为了更新&#34;当前列表消息,但这个console.logs似乎永远不会工作,即使使用subscribe()

1 个答案:

答案 0 :(得分:1)

使用Subject的实例并将消息推入其中:

const subject$ = new Subject();

...

subject.next(messagesAfterPOSTRequest);

...然后使用async管道以相同方式使用模板。

如果您希望能够获取以前的消息,也许还可以查看ReplaySubjectBehaviorSubject个类。