我通过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应该在完成时设置一个布尔变量。
答案 0 :(得分:0)
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>
&#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;
}
}