#html #mongodb #meteor #ionic2
#HTML #mongodb #метеор #ionic2
Вопрос:
У меня есть проблема, которую я не понимаю, и если кто-нибудь может помочь, я был бы признателен.
Я использую Ionic2 с Meteor / MongoDB.
У меня есть курсор:
private messages: Mongo.Cursor<Message>;
На сервере я делаю вставку:
Messages.insert({
chatId: chatId,
senderId: senderId,
content: content,
readByReceiver: false,
createdAt: new Date()
});
Он запускает наблюдаемое, как и ожидалось:
this.messages.observe({
added: (message) => this.addMessageToLocal(message)
});
private addMessageToLocal(newMessage: Message): void {
// here I print the message, and it is as expected
}
Кроме того, я выполняю a forEach
через messages
, и все они заполняются, как и ожидалось.
Проблема
Моя проблема в html
. Я перебираю messages
курсор. Он отображает каждый элемент, как и ожидалось. Пока я не добавлю message
(как указано выше). Тогда новый message
из html
есть undefined
.
<template ngFor let-message [ngForOf]="messages">
<div *ngIf="!exists(message)" class="message-wrapper">
<div *ngIf="message.changeDate">
<center><span class="message-datetime">{{message.createdAt | amDateFormat: 'DD MMM YYYY'}}</span></center>
</div>
<div [class]="'message message-' message.ownership">
<div class="message-content">server:{{message.content}}</div>
<span class="time-tick">
<span *ngIf="message" class="message-timestamp">{{message.createdAt | amDateFormat: 'h:mm a'}}</span>
<div *ngIf="message amp;amp; message.readByReceiver amp;amp; senderId == message.senderId">
<span class="checkmark">
<div class="checkmark_stem"></div>
<div class="checkmark_kick"></div>
</span>
</div>
</span>
</div>
</div>
</template>
Последним message
элементом в цикле (добавленным новым) является undefined
. т. е. В *ngIf="!exists(message)"
функции, вызываемой из html
, я печатаю message
, и его undefined
.
Итак, в цикле html
I messages
наведите курсор, и появится новый undefined
. Однако, если даже в той же функции ( exists()
) я снова перебираю messages
курсор, просто чтобы проверить его, ни один из элементов undefined
не определен.
Вопрос
Пожалуйста, кто-нибудь может подсказать, что я могу сделать, чтобы не иметь последнего item
в Cursor
as undefined
?
Спасибо
Обновить
Я получаю что-то, чего не понимаю.
Когда я вызываю функцию из html
следующего, message
не undefined
:
{{ formatMessage(message) }}
Но если я вызываю функцию следующим образом, это undefined
:
*ngIf="!exists(message)"
Ответ №1:
Я решил это, используя:
changeDetection: ChangeDetectionStrategy.OnPush,
Но я все еще думаю, что в Angular может быть ошибка