Ich habe ein Problem, das ich nicht verstehe, und wenn jemand helfen kann, würde ich es begrüßen.Artikel in Schleife ist undefined
Ich verwende Ionic2 mit Meteor/MongoDb.
Ich habe einen Cursor:
private messages: Mongo.Cursor<Message>;
Auf dem Server kann ich einen Einsatz:
Messages.insert({
chatId: chatId,
senderId: senderId,
content: content,
readByReceiver: false,
createdAt: new Date()
});
Es löst eine beobachtbare wie erwartet:
this.messages.observe({
added: (message) => this.addMessageToLocal(message)
});
private addMessageToLocal(newMessage: Message): void {
// here I print the message, and it is as expected
}
Auch ich tun ein forEach
über die messages
, und sie sind alle wie erwartet gefüllt.
Ausgabe
ist mein Problem in der html
. Ich Schleife durch den Cursor messages
. Es zeigt jedes Element wie erwartet an. Bis ich ein message
(wie oben) hinzufügen. Dann ist das neue message
von 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 && message.readByReceiver && senderId == message.senderId">
<span class="checkmark">
<div class="checkmark_stem"></div>
<div class="checkmark_kick"></div>
</span>
</div>
</span>
</div>
</div>
</template>
Das endgültige message
Element in der Schleife (die neuen hinzugefügt), ist undefined
. In der *ngIf="!exists(message)"
-Funktion, die von der html
aufgerufen wird, drucke ich die message
und ihre undefined
.
So in der html
ich Schleife über die messages
Cursor, und die neue ist undefined
. Wenn jedoch sogar in der gleichen Funktion (exists()
), ich Schleife über die messages
Cursor wieder, nur um es zu testen, ist keiner der Artikel undefined
.
Frage
Bitte kann jemand empfehlen, was ich tun kann, um nicht die letzten item
im Cursor
als undefined
?
Dank
UPDATE
ich etwas bekomme ich nicht verstehen.
Wenn ich eine Funktion aus der html
wie folgt aufrufen, ist message
nicht undefined
:
{{ formatMessage(message) }}
Aber wenn ich eine Funktion wie folgt aufrufen, ist es undefined
:
*ngIf="!exists(message)"