Angular 2 在迭代结束时使用 *ngFor 设置布尔值

Angular 2 set boolean at end of iteration using *ngFor

我正在通过 rest-endport 加载一些数据以将其保存在数组中。在 *ngFor 指令中,我目前正在遍历所有这些数据。所以一切正常。

在 Angular 中是否有任何可能的方法,例如每当数组迭代完成时设置一个布尔值(以便我可以在完成时触发另一个函数)?

-- 编辑--

我正在检索数据的 ngOnInit 生命周期方法:

ngOnInit() {
   this.restService.getSomeBooks(5000).subscribe(buch => {
     this.buecher = buch;
     this.fetched = true;
   })
}

之后 - 在 HTML - 我正在迭代该数据:

    <table>
      <thead>some table-heads</thead>
      <tbody>
      <tr style="text-align: center"  *ngFor="let buchforTable of buecher">
        <td>{{buchforTable.author}}</td>
        <td>{{buchforTable.erscheinungsdatum}}</td>
        <td>{{buchforTable.isbn.toString()}}</td>
        <td>{{buchforTable.verlag}}</td>
        <td>{{buchforTable.uuid}}</td>
      </tr>
      </tbody>
    </table>

*ngFor 迭代应该在完成时设置一个布尔变量。

正如 Alex Po 已经提到的,trackBy 正在运行。正如您在以下代码片段中看到的,使用 trackBy 可以根据迭代的当前索引处理事件。

<tbody>
  <tr style="text-align: center" *ngFor="let buchforTable of buecher; trackBy: trackByFn">
    <td>{{buchforTable.author}}</td>
    <td>{{buchforTable.erscheinungsdatum}}</td>
    <td>{{buchforTable.isbn.toString()}}</td>
    <td>{{buchforTable.verlag}}</td>
    <td>{{buchforTable.uuid}}</td>
  </tr>
</tbody>

要测量所有数组对象的渲染过程的时间,trackBy 函数将如下所示(此处数组包含 5000 个对象 -> 索引 0 到 4999):

 trackByFn(index){
    if(index == 0)
      this.renderStart = performance.now();
    if(index == 4999) {
      var renderStopp = performance.now();
      var timeToRender = renderStopp - this.renderStart;
    }
  }