我正在从服务器端获取一个包含时间戳列表的数据列表。我试图将时间显示为用户的当前时间-时间戳。自消息发布以来,更像是时间。我的代码如下所示,它将引发此错误。
ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改
timeSince方法是罪魁祸首。当我评论它或返回一个静态值时,它就可以正常工作。
<ion-list *ngIf="messages" lines="full" style="background:transparent" #content>
<ion-item style="padding-top:10px;" *ngFor="let msg of messages | async;let last = last ">
<ion-row style="width:100%;">
<ion-col size="3">
<ion-row>
<ion-col class="sg-reg-text">{{formatName(msg.name)}}</ion-col>
</ion-row>
<ion-row>
<ion-col style="padding:0;padding-left:8px" class="sg-tiny-text"><ion-icon name="time" color="light"></ion-icon> {{timeSince(msg.date)}}</ion-col>
</ion-row>
</ion-col>
<ion-col style="border-bottom: 1px solid #7e7c8d;padding-bottom: 10px">
<ion-row>
<ion-col class="sg-reg-text">{{msg.message}}</ion-col>
</ion-row>
</ion-col>
</ion-row>
</ion-item>
</ion-list>
.ts
timeSince(ts:number){
var nowTs = (new Date()).getTime()
var sec = (nowTs - ts)/1000
if(sec > 59){
var min = sec/60
if(min > 59){
var hour = min/60
return hour + " h"
}
return min + " m"
}
return sec + "s"
}