问题是:我有一个简单的组件,它呈现消息的一些“历史记录”。加载应用程序时,它会发出 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
管道以相同的方式使用模板。
如果您也希望能够获取以前的消息,也许还可以查看 ReplaySubject
或 BehaviorSubject
类。
关于angular - 如何更新异步管道中使用的 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689641/