【发布时间】:2019-12-06 11:41:58
【问题描述】:
我有一个消息传递组件,可以在我的系统中与另一个用户编写消息。问题是当我打开组件时,网站变得超级慢,并且在加载消息之前最多需要 15 秒。我可以在代码中做些什么不同的事情以使其正常工作?
allMessages() {
return this.messages.concat(this.uploadingMessages);
}
<ng-container #messageList *ngFor="let m of allMessages(); let i = index; trackBy: trackByMessageId">
<div *ngIf="case !== null" [class.unread]="case.hasReadUntilTimestamp < m.timestamp && !m.sender.isMe && !m.setRead">
<div class="newMessage">
<div class="newMessage__line"></div>
<div class="newMessage__line"></div>
</div>
<div class="row messageAndHeader line" *ngIf="allMessages()[i - 1]?.sender.id !== m.sender.id; else elseBlock">
<div class="row messageInfo">
<div class="profileImg">
<img *ngIf="m.sender.profileImageUrl !== null" [src]="m.sender.profileImageUrl" />
*ngIf="m.sender.profileImageUrl === null">
</div>
【问题讨论】:
-
请使用正确的标记更新您的问题。标记似乎有一些问题。此外,如果可能,请分享一些示例数据以供使用。
-
我清楚地看到的原因之一是您在
*ngIf中调用allMessages(),它将在每个更改检测周期调用该函数。 -
是的,不要在你的角度模板中调用这样的方法。获取组件中的数据,将其存储在变量中,然后在模板中使用该变量。
标签: javascript html arrays angular typescript