Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 模板上是否有只读函数?_Angular - Fatal编程技术网

Angular 模板上是否有只读函数?

Angular 模板上是否有只读函数?,angular,Angular,假设我有以下模板 <div>{{myvalue.ID}}</div> 或 或者甚至做类似的事情 <div>{{myvalue.getID()}}</div> readonly getID= (): string => this.ID; {{myvalue.getID()} readonly getID=():string=>this.ID; 这看起来像是一个真正的机会 我的问题是,与直接变量引用相比,get和readonly函数是否变

假设我有以下模板

<div>{{myvalue.ID}}</div>

或者甚至做类似的事情

<div>{{myvalue.getID()}}</div>

readonly getID= (): string => this.ID;
{{myvalue.getID()}
readonly getID=():string=>this.ID;
这看起来像是一个真正的机会

我的问题是,与直接变量引用相比,get和readonly函数是否变慢了

我有一些变量要显示给用户,但要保持它们的私有性,因为我不希望任何人修改它们(在代码和模板中)。我相信没有其他方法可以做到这一点,但是,这会影响性能吗

将函数用于绑定引用是不好的设计

原因如下:

  • 每次运行角度变化检测(CD)时,都会创建对该函数的新引用。因为一旦返回,函数引用就是GC
  • 此外,每次运行CD时都会调用该函数。对于简单的getter/setter函数来说,这似乎不多。但是,如果函数具有更复杂的实现,则可能会产生重大影响。最终使CD变得沉重
  • 插值语法之间的任何代码都会按角度进行计算,从而导致对CD cycle的函数调用

那么如何在模板中使用私有变量呢?我应该把一切公开吗?这将降低可维护性,因为每个人都可以对我的所有变量做任何他们想做的事情。您可以始终为私有变量公开一个简单的
getter
函数。但通常通过设计,需要在模板中公开的变量应该是公共的。由于编译后,模板也会转换为类以提高性能。
   get ID() {
      return this._ID;
   }
<div>{{myvalue.getID()}}</div>

readonly getID= (): string => this.ID;