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

时间:2017-05-23 19:39:43

标签: javascript angular typescript angular2-directives angular2-observables

我通过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-iteration应该在完成时设置一个布尔变量。

1 个答案:

答案 0 :(得分:0)

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

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

为了测量所有数组对象的渲染过程的时间,trackBy函数看起来像这样(数组包含5000个对象 - &gt;索引0到4999):

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