Оценка * ngIf внутри каждого цикла * nFor в Angular 7 - PullRequest
0 голосов
/ 13 ноября 2018

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

...