У меня есть случай, когда я отображать некоторую информацию пользователя с помощью трубы:Информация о пользователе не отображается
{{ author.id | user: 'name' }}
я получаю id
от автора, а затем, я использую user
трубу, чтобы получить его информация хранится в /users/$uid
. Вот моя труба:
export class UserPipe implements PipeTransform {
constructor(private af: AngularFire) {}
transform(uid: string, field: any): any {
let data = {};
let fb = this.af.database.object(`/users/${uid}`);
fb.subscribe(res => {
data = res;
console.log(data[field]);
});
return data[field];
}
}
Это прекрасно работает, если автор является текущим вошедшим в систему пользователем. Однако это имя не отображается для других.
Это имя обычно печатается на консоли, однако оно все еще не отображается в HTML. Я также дважды проверил правила безопасности Firebase, и все в порядке. Я не получаю никаких ошибок в консоли.
Выполняется асинхронный запрос, что означает, что вы возвращаете данные [поле] ', прежде чем данные будут назначены в вызове. – silentsod
Вы можете подумать о том, чтобы сделать эту трубку «трубой async», вернуть 'this.af.database.object ('/users/$ {uid} ')' из 'Pipe' и на просмотр, а затем использовать {{(author.id | user | async)? .name}} –
Как я могу следить за изменениями в трубе? Вы знаете, почему этого не происходит, когда автор вошел в систему? – brians69