我有一个我不明白的问题,如果有人可以提供帮助,我将不胜感激。
我正在使用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
}
另外,我通过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 && 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
。即在*ngIf="!exists(message)"
调用的html
函数中,我打印message
及其undefined
。
所以在html
我循环messages
光标,新的光标是undefined
。但是,如果即使在相同的函数(exists()
)中,我再次遍历messages
Cursor,只是为了测试它,所有项都不是undefined
。
问题
请有人建议我可以做什么不将item
中的Cursor
undefined
作为html
?
由于
更新
我得到了一些我不理解的东西。
当我从message
调用函数时,undefined
不是{{ formatMessage(message) }}
:
undefined
但如果我按如下方式调用函数,则为*ngIf="!exists(message)"
:
ActiveSheet.PivotItems(1).Visible = True
答案 0 :(得分:0)
我通过使用:
解决了这个问题changeDetection: ChangeDetectionStrategy.OnPush,
但我仍然认为Angular可能存在错误