* ngIf中的角度6变量或方法绑定

问题描述 投票:2回答:3

绑定变量和绑定模板* ngIf中的方法之间是否有任何区别。

例如:

情况1:

<div *ngIf="myVar">ABC</div>

案例2:

<div *ngIf="myFunction()">ABC</div>

myFunction() : boolean {
   if (cond1 && cond2 && cond3) {
       return true;
   } else { 
       return false;
   }
}

对性能有影响吗?

我正在尝试使用2种情况,获取范围错误:最大调用堆栈超出。

帮我这个?谢谢

angular variable-binding
3个回答
5
投票

就在这里

第一个没有任何性能问题,因为你直接检查一个变量,而第二个将有角度使用变化检测,它会多次触发


1
投票

当你每次调用一个函数角火时都会改变检测周期。最好使用get属性

<div *ngIf="myvar">ABC</div>

get myvar() : boolean {
  if (cond1 && cond2 && cond3) {
    return true;
  } 
  return false;
}

0
投票

你可以做些什么来避免性能问题是你可以创建一个类变量

public myVar = cond1 && cond2 && cond3

然后你可以在第一个选项中使用它并保持代码的可读性

© www.soinside.com 2019 - 2024. All rights reserved.