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

时间:2018-08-07 09:20:39

标签: angular variable-binding

在模板* 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种情况,获取范围错误:超出最大调用堆栈数。

对此有帮助吗?谢谢

3 个答案:

答案 0 :(得分:5)

是的

第一个不会有任何性能问题,因为您直接检查变量,而第二个则因为角度使用变化检测并且会触发多次

答案 1 :(得分:1)

当您调用角度触发功能时,每次都会更改检测周期。最好使用get属性

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

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

答案 2 :(得分:0)

可以避免出现性能问题的方法是可以创建一个类变量

public myVar = cond1 && cond2 && cond3

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