나는 이해할 수없는 문제가 있으며, 누구든지 도울 수 있으면 감사 할 것입니다.루프의 항목이 정의되지 않았습니다.
저는 Meteor/MongoDb와 함께 Ionic2를 사용하고 있습니다. 또한
this.messages.observe({
added: (message) => this.addMessageToLocal(message)
});
private addMessageToLocal(newMessage: Message): void {
// here I print the message, and it is as expected
}
, 내가 A : 그것은 관찰 예상대로 트리거
Messages.insert({
chatId: chatId,
senderId: senderId,
content: content,
readByReceiver: false,
createdAt: new Date()
});
: 내가 삽입을 서버에서
private messages: Mongo.Cursor<Message>;
:
나는 커서가 forEach
에서 messages
까지이며 모두 예상대로 채워집니다.
문제
내 문제는 html
입니다. 여물통 messages
커서를 반복합니다. 예상대로 각 항목을 표시합니다. 내가 message
(위와 같음)을 붙일 때까지. 그런 다음 html
의 새로운 message
은 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>
루프 (새 첨가)의 마지막 항목 message
, undefined
이다. 즉 html
에서 호출 된 *ngIf="!exists(message)"
함수에서 message
및 해당 undefined
을 인쇄합니다.
따라서 html
에서 커서는 messages
커서 위로 이동하고 새로운 것은 undefined
입니다. 그러나 동일한 기능 (exists()
)이라도 messages
커서를 다시 반복하면 테스트 할 수 있습니다. 항목 중 어느 것도 undefined
이 아닙니다.
질문
사람이 내가 하지가 undefined
로 Cursor
의 마지막 item
을 위해 무엇을 할 수 있는지 제안 할 수 있습니다하세요?
감사
UPDATE
내가 이해할 수없는 무언가를 얻고있다.
{{ formatMessage(message) }}
그러나 나는 다음과 같이 함수를 호출하는 경우, 그것은 undefined
입니다 :
다음과 같이 내가 html
에서 함수를 호출 message
는 undefined
하지
*ngIf="!exists(message)"