我正在尝试在Angular模板中使用以下语句
<ng-container *ngFor="let sequence of sequences; let i = index">
<div *ngIf="displayNewDate(sequence.start)">
<p>{{ sequence.start | date:'shortDate' }}</p>
</div>
{{ sequence.content }}
</ng-container>
使用displayNewDate(sequence.start)
方法检查当前日期是否已显示,否则显示。因此,我希望* ngIf在true和false之间变化。
public displayNewDate(current) {
const currentDate: Date = new Date(current);
if (!this.previousDate) {
this.previousDate = currentDate;
return true;
} else if (this.previousDate.getFullYear() < currentDate.getFullYear()) {
this.previousDate = currentDate;
return true;
} else if (this.previousDate.getFullYear() == currentDate.getFullYear() && this.previousDate.getMonth() < currentDate.getMonth()) {
this.previousDate = currentDate;
return true;
} else {
return false;
}
}
但是我在控制台中看到以下内容:
错误错误:“ ExpressionChangedAfterItHasBeenCheckedError:表达式 检查后已更改。先前的值:'ngIf:true'。 当前值:'ngIf:false'。”
这是对 * ngIf 指令的限制吗?如果是这样,是否有另一种方法来获取序列列表,并且每次序列以与先前序列不同的日期开始,则在给定序列上方显示新日期。