Angular 4 ExpressionChangedAfterItHasBeenCheckedError毫秒 - 如何避免

时间:2017-10-24 17:09:20

标签: angular

我有一个视图,其中我想要提供自上次请求以来传递的毫秒数(类似于ping)。 e.g。

Ping: {{timePassed}}

我有一个带吸气剂的组件:

get timePassed() {
   return new Date().getTime() - this.lastPacket;
}

显然,当我们两次获得 timePassed 时,我们会得到两个不同的值(即使差异为1 ms)。因此,我们将 ExpressionChangedAfterItHasBeenCheckedError

我完全清楚为什么会发生这种错误,但在这种情况下,我坚决要求这个值精确到1毫秒。

能够关闭这个特定值的双重检查真的很棒。

有人知道如何处理这个问题吗?

1 个答案:

答案 0 :(得分:1)

您可以通过明确触发更改来处理此问题,

import { ChangeDetectorRef } from '@angular/core';

constructor(private cdr: ChangeDetectorRef) {}

get timePassed() {
   this.timePassed = new Date().getTime() - this.lastPacket;
   this.cdr.detectionChanges();
}