2016-08-03 50 views
1

问题在于chat.name起初显示一个空白,因为映射尚未完成。在更新数据之前有什么方法可以等待映射吗?我该如何等待Angularfire 2中的观察值?

this.chats = this.af.database.list('/chats/' + this.mainService.getUserId(), { 
    query: { 
    orderByChild: 'timestamp' 
    } 
}).map((chats) => { 
    return chats.map(chat => { 
     chat.name = this.af.database.object(`/users/${chat.uid}`); 
     return chat; 
    }) 
}); 

这里是用户界面。

<ul> 
    <li *ngFor="let chat of chats | async"> 
     {{ (chat.name | async)?.name }} : {{ chat.lastMessage }} 
    </li> 
</ul> 

回答

1

看到这个答案 - Nested Observables in Angular2 using AngularFire2 not rendering in view

但我怀疑你将需要Elvis操作符添加到HTML页面

{{ chat?.name }}

+0

其实,我看到了一个已经在不久前。我可以显示值。只是一旦我推送消息,它会保持空白几秒钟,然后显示chat.name。 – Hey

+0

我没有UI代码来查看,所以在这里提供任何指导都很难。 –

+0

我刚刚编辑我的帖子。对于那个很抱歉。问题是,起初它会显示最后一条消息,几秒钟后它将显示chat.name。谢谢。 如果我试图用div来包装它并做一个* ngIf,那么当有新的更新时,它会令用户烦恼。 谢谢 – Hey