首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从可观察的对象数组迭代*ngFor时修复InvalidPipeArgument错误

如何从可观察的对象数组迭代*ngFor时修复InvalidPipeArgument错误
EN

Stack Overflow用户
提问于 2019-08-22 16:35:52
回答 1查看 226关注 0票数 0

当尝试从可观察的对象数组中迭代*ngFor时,我有一个错误

我用角8

聊天消息服务

代码语言:javascript
复制
private chatMessages = [];
private chatMessagesStream = new BehaviorSubject(this.chatMessages);

getMessages(): Observable<any> {
   return this.chatMessagesStream.asObservable();
}


addMessage(chatMessage) {
    this.chatMessages.push(chatMessage);
    this.chatMessagesStream.next(this.chatMessages);
}

聊天视图组件

代码语言:javascript
复制
private chatMessages:Observable<Array<any>>;

constructor(
   private chatMessagesService: ChatMessagesService) {
}

ngAfterViewInit() {
    this.chatMessagesService.getMessages().subscribe(messages => {
      this.chatMessages = messages;
      this.scrollMessagesToBottom(true);
    });
}

聊天HTML模板

代码语言:javascript
复制
<div class="row conpeek_message_chat_row" *ngFor="let chatMessage of chatMessages | async ">
...
</div>

在init组件之后,我在控制台中出现了一个问题,有什么问题吗?

代码语言:javascript
复制
ERROR Error: InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-22 16:37:21

删除异步管道

由于chatMessages是不可观测的,因此它包含纯值。

代码语言:javascript
复制
this.chatMessagesService.getMessages().subscribe(messages => {
    this.chatMessages = messages; // <------- HERE , you are assigning value
    this.scrollMessagesToBottom(true);
});

如果要保持异步管道,就必须使用observable分配chatMessages,如下所示:

代码语言:javascript
复制
this.chatMessages = this.chatMessagesService.getMessages();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57613718

复制
相关文章

相似问题

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