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

标签 angular rxjs observable

问题是:我有一个简单的组件,它呈现消息的一些“历史记录”。加载应用程序时,它会发出 POST 请求,获取数据并将数据设置为 Observable,如下所示

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

哪里public messages$: Observable<any>;

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

let message of messages$ | async

效果不错,但是....

我通过 websocket 收到一些“新消息”,所以我想更新在上一步创建的列表。我正在尝试使用 scan()

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

为了“更新”当前列表消息,但是这个 console.logs 看起来永远无法工作,即使使用 subscribe() 也是如此

最佳答案

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

const subject$ = new Subject();

...

subject.next(messagesAfterPOSTRequest);

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

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

关于angular - 如何更新异步管道中使用的 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689641/

相关文章:

javascript - 如何在回调函数中保留 'this' 实例

html - 悬停时更改 Angular Material 扩展标题的颜色

angular Rxjs tap保证运行代码部分

javascript - 主题不发出数据

javascript - Angular2 : AsyncPipe and Observable, 无法检索属性(TypeError : Cannot read property . .. of null)

angular - 使用 Angular 2 Forms 根据需要动态标记字段的正确方法是什么?

javascript - 如何在 Kendo Charts Angular 2 上添加绘图带

javascript - 可观察数据更新时如何更新 View 中的数据?

java - 如何 junit 这个可观察的异步方法

angular - 使用 Observable 或 Promise 在 Angular 6 中转换管道