Я пытаюсь использовать следующее выражение в моем шаблоне 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 изменялось между истиной и ложью.
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: Expression
изменилось после того, как было проверено. Предыдущее значение: 'ngIf: true'.
Текущее значение: 'ngIf: false'. "
Является ли это ограничением директивы * ngIf ? Если это так, есть ли альтернативный способ получить список последовательностей, и каждый раз, когда последовательность начинается с даты, отличной от предыдущей последовательности, отображается новая дата над данной последовательностью.