*ngIf 具有复合条件性能



众所周知,在 *ngIf 中调用函数可能会对性能不利,因为它将在每个更改检测周期中进行评估。相反,建议使用基元(数字、布尔值,..(或不可变值。

我的问题是 *ngIf 中的复合条件是否以相同的方式处理。我想它也在每个更改检测中执行,但我想确认一下。

例如:

<div *ngFor="let item of items; trackBy: itemById">
<button *ngIf="item.showAction && otherComponentCondition">Next</button>
</div>

是的,它们将在每个更改检测周期中重新评估。可以通过将get函数用作属性访问器和控制台日志来证明这一点。

不在表达式绑定中调用函数的最佳做法主要是因为函数往往更容易变得更复杂。

在性能方面,最好甚至不使用复合条件,而是使用专用变量,在其中一个化合物更改时更改它。也就是说,作为旁注,也是响应式编程在角度中如此受欢迎的原因。

我用这个例子添加了一个简单的 Stackblitz。

最新更新