使用moment.js

时间:2017-12-05 06:32:51

标签: javascript angular typescript momentjs

  

检查后表情发生了变化。上一个值:'25分钟前'。当前价值:'26分钟前'。

我试图在我的角度4组件中显示moment次。

组件标记

<div class="float-right">
    <small *ngIf="!isInProgress(batch)" class="text-muted"  
    [textContent]="getMomentEndTime(batch)"></small>
</div>

组件

export class BatchStatusComponent {
@Input() batchStatuses: BatchStatus[];

constructor(
    private readonly logger: NGXLogger) {
}

isInProgress(batch) {
    var estimate = batch.percentCompleted || 0;
    return (estimate > 0 && estimate < 100);
}

getMomentEndTime(batch: BatchStatus) {
    return (batch.endTime)
        ? moment(batch.endTime).fromNow()
        : "";
}

显然,价值随着时间的推移而变化,所以没有惊喜吗?

1 个答案:

答案 0 :(得分:0)

错误本身是无害的,表明在更改检测时可能出现问题。如果这是预期的,则可以安全地忽略错误。

错误是由于在更改检测周期期间值已更改的事实引起的。这可以通过限制方法来改进:

throttledGetMomentEndTime = _.throttle(this.getMomentEndTime, 100);

或者,代码可以重构为使用 pure 管道将时间转换为... minutes ago字符串,例如来自amTimeAgo包的angular2-moment管道。

可能或多或少经常看到此错误的事实可能表明更改检测周期经常发生。此外,如果符合要求,可以通过为组件设置OnPush更改检测策略来减少更改检测周期。