Angular 2输入绑定vs字符串更改检测

时间:2018-01-22 20:43:10

标签: javascript angular

假设我有以下内容:

class TestComponent {
  @Input() title;
}

使用括号和无括号之间的变化检测是否存在差异?

<test [title]="title"></test>
<test [title]="'Component Title'"></test>  
<test title="Component Title"></test> 

为了更准确,静态版本也会在每次更改检测时进行检查吗?

1 个答案:

答案 0 :(得分:2)

由于您声明@Input Angular将为所有这些创建绑定。 它会将其添加到在变更检测周期中调用的updateDirectives函数。

以下

<test [title]="title"></test>
<test [title]="'Title2'"></test>
<test title="Title3"></test>

将显示为:

updateDirective(_ck, v) {
  var _co = _v.component;
  var currVal_1 = _co.title;
  _ck(_v,4,0,currVal_1);
  var currVal_2 = 'Title2';
  _ck(_v,7,0,currVal_2);
  var currVal_3 = 'Title3';
  _ck(_v,10,0,currVal_3);
}

<强> Live Example

enter image description here

这里的主要区别是角度读取@Input绑定,还为title="Title3"案例创建属性。如果您未声明@Input,则只会创建属性。