我*ngFor
用来迭代一些这样的数据:
<div *ngFor="let d of [1, 2, 3]"> {{d}} </div>
一切都很好,我得到了预期的结果:
<div> 1 </div>
<div> 2 </div>
<div> 3 </div>
然后,我想知道我是否使用函数而不是{{d}}
,所以我写了一个函数:
protected logAndReturn(item) {
console.log(item);
return item;
}
我用它:
<div *ngFor="let d of [1, 2, 3]"> {{logAndReturn(d)}} </div>
我得到了与第一个代码相同的渲染 HTML 结果,但控制台输出不是我的预期输出。控制台输出:
1
2
3
1
2
3
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
1
2
3
1
2
3
添加的函数现在被调用了 12 次(每个项目 4 次)
这是您可以自己测试的代码:jsfiddle
我的代码错了吗?有什么解决方案可以防止这些额外的电话吗?为什么会发生这种情况,有人可以解释一下吗?