在诺言中使用另一个异步值(message.sender
之后,我试图获得一个诺言,以在我的HTML模板中进行异步解析。
message.sender对*ngFor
循环中的每条消息进行更改。函数getSenderUsername(senderUid)
似乎已收到message.sender
,但在模板中,{{ (databaseService.getSenderUsername(message.sender) | async) }}
从未解析为任何值。如何解决?
消息在 inbox.component.ts 中定义如下:
messages = this.databaseService.getMessages();
在模板( inbox.component.html )中:
<tr style="background-color: white;" *ngFor="let message of messages | async as messages; index as i">
<td>
{{ (databaseService.getSenderUsername(message.sender) | async) }}
</td>
</tr>
在 database.service.ts 中:
getMessages() {
return new Promise(function (resolve) {
return firebase.auth().onAuthStateChanged(function (user) {
if (user) {
resolve(user.uid);
}
});
}).then((result) => {
return firebase.database().ref('/mailboxes/' + result).once('value').then((snapshot) => {
return snapshot.val();
});
});
}
getSenderUsername(senderUid) {
return firebase.database().ref('/accounts/' + senderUid + '/username').once("value").then((snapshot) => {
return snapshot.val();
});
}
我希望所有这些都有意义。