2016-08-03 29 views
1

Das Problem ist, dass der Chatname zuerst ein Leerzeichen anzeigt, weil das Mapping noch nicht abgeschlossen ist. Gibt es eine Möglichkeit, auf das Mapping zu warten, bevor es die Daten aktualisiert?Wie kann ich auf das Observable in Angularfire 2 warten?

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; 
    }) 
}); 

Hier ist die Benutzeroberfläche.

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

Antwort

1

diese Antwort sehen - Nested Observables in Angular2 using AngularFire2 not rendering in view

Aber ich vermute, dass Sie den elvis Bediener auf die HTML-Seite

{{ chat?.name }}

+0

Eigentlich habe ich vor einiger Zeit schon, dass man, hinzufügen müssen. Ich kann den Wert jedoch anzeigen. Es ist nur so, dass wenn ich eine Nachricht drücke, bleibt sie für ein paar Sekunden leer und zeigt dann den Chat an. – Hey

+0

Ich habe keine UI-Code zu überprüfen, so ist es schwer, hier irgendeine Anleitung zur Verfügung zu stellen? –

+0

Ich habe gerade meinen Beitrag bearbeitet. Das tut mir leid. Das Problem ist, dass zuerst die letzte Nachricht angezeigt wird und nach ein paar Sekunden chat.name angezeigt wird. Vielen Dank. Wenn ich versuche, es um ein div zu wickeln und ein * ngIf zu machen, wird es für den Benutzer ärgerlich, wenn es ein neues Update gibt. Vielen Dank – Hey