在Angular 7的每个* nFor循环中评估* ngIf

时间:2018-11-12 21:22:18

标签: angular ngfor angular-ng-if angular7

我正在尝试在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 指令的限制吗?如果是这样,是否有另一种方法来获取序列列表,并且每次序列以与先前序列不同的日期开始,则在给定序列上方显示新日期。

0 个答案:

没有答案