【发布时间】:2017-05-17 07:00:43
【问题描述】:
我对 Angular 4 有一点问题。 抛出下面的错误
错误:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:'225px'。当前值:'-21150px'。
这是我的html:
<div class="channelRow" *ngFor="let epgChannel of channelGroupEpg?.epgChannels">
<div class="epgChannelList">
{{epgChannel.channel.name}}
</div>
<template ngFor let-epgDate [ngForOf]="epgChannel.dates">
<div class="epgEntry"
*ngFor="let epgProgram of epgDate.programs"
[style.width]="getWidth(epgProgram, epgDate.date)"
(click)="selectProgram(epgProgram)"
data-toggle="modal"
data-target="#detailModal">
{{epgProgram.title}}
</div>
</template>
</div>
这就是错误的来源:
getWidth(program: EPGProgram, date: Date) {
let min = this.helperService.getDurationByProgramInMinutes(program);
let startDate = new Date(program.start.getFullYear(), program.start.getMonth(), program.start.getDate(), 0, 0, 0, 0);
let stopDate = new Date(program.stop.getFullYear(), program.stop.getMonth(), program.stop.getDate(), 0, 0, 0, 0);
if (startDate.getTime() !== date.getTime()) {
let minNextDay = this.helperService.getMinutesToNextDay(program.start, date);
min = min - minNextDay;
}
if (stopDate.getTime() !== date.getTime()) {
let minNextDay = this.helperService.getMinutesToLastDay(program.stop, date);
min = min - minNextDay;
}
let width = min * 5;
return width.toString() + 'px';
}
谁能告诉我,为什么会这样?
【问题讨论】:
-
你能装个小家伙吗?
-
这篇文章可能是解决方案。 stackoverflow.com/questions/43375532/…
标签: angular runtime-error