ExpressionChangedAfterItHasBeenCheckedError:使用日期检查表达式后,表达式已更改

时间:2019-01-10 07:00:24

标签: angular ionic4

我正在从服务器端获取一个包含时间戳列表的数据列表。我试图将时间显示为用户的当前时间-时间戳。自消息发布以来,更像是时间。我的代码如下所示,它将引发此错误。

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>&nbsp;{{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"
  }

0 个答案:

没有答案