Я строй простого приложения чата при поддержке этой Firebase структуры базы данных:Как добавить атрибуты на стороне клиента в элементы FirebaseListObservable?
messages: {
"-KTjL_oLrKOboa2su2zk": {
name: "puf",
text: "Look I'm smiling :-)"
},
"-KTjNfaNem752ChFBcnC": {
name: "puf",
text: "And now I'm not smiling"
}
}
Я использую Angular2 и AngularFire2 для генерации HTML. У меня есть простой список сообщений из базы данных Firebase в моем контроллере:
export class AppComponent {
messages: FirebaseListObservable<any[]>;
constructor(public af: AngularFire) {
this.messages = af.database.list('messages');
}
}
Я хочу, чтобы обнаружить определенные условия в каждом сообщении, и перевести это в смайлик в моем HTML. Поскольку это чисто отображаемая информация, полученная из существующего контента, я не хочу хранить его в базе данных.
Мой HTML шаблон:
<li class="text" *ngFor="let message of messages | async">
{{message.name}} {{message.emoji}}: {{message.text}}
</li>
В Firebase JavaScript SDK, это было бы сродни:
ref.on('child_added', function(snapshot) {
var message = snapshot.val();
if (message.text.indexOf(':-)') >= 0) {
message.emoji = '';
}
addMessageToHTML(message);
});
Как я должен сделать такой стороне клиента обогащения в AngularFire2?
Есть вопрос, как получить данные из FirebaseListObservable или что-то еще? – Sasxa
Я не уверен. Самое лучшее, что я могу сказать, это то, что я хочу добавить свойство к каждому объекту из FirebaseListObservable, чтобы я мог отображать это свойство в своем HTML (что я только что добавил к этому вопросу). –
Я обновил ответ с помощью рабочего примера. – Sasxa