我有一个为每次迭代调用的函数。
并且没有预料到,每次迭代都会调用此函数两次。
public setLevel(deviceId: string, averageFps: number): void {
let device = `device-${deviceId}`;
// (<HTMLElement>document.querySelector(`#${device} .level-fps-wrapper .level-fps`)).style.width = `${averageFps / 300 * 100}%`;
console.log(device);
}
这是html模板
<div class="container">
<div class="row">
<h1 class="header">Devices</h1>
<div class="col l4 m6 s12 clickable" *ngFor="let device of this.devices" (click)="goToDevice(device)">
<div class="card" [id]="'device-' + device.device._id">
<div class="card-content">
<div class="row no-margin-bottom">
<div class="col s2">
<img class="circle circle-element" [src]="'./app/devices/images/' + device.device.os + '_logo.png'" alt="">
</div>
<div class="col s10">
<span class="card-title">{{ device.device.name }}</span>
<p>
{{ device.averageFps | number: '.1-2' }} fps
</p>
</div>
</div>
</div>
<div class="card-action level-fps-wrapper">
<div class="level-fps">{{ this.setLevel(device.device._id, device.averageFps) }}</div>
</div>
</div>
</div>
</div>
这是输出
它应该是3行而不是6行。
有人可以向我解释一下吗?是否与角度生命周期钩子有关?
感谢您的回答!
答案 0 :(得分:0)
是的,这很常见。类似于角度1,角度无法判断函数的结果是否会发生变化,因此它会在每个摘要循环中调用它。