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
Javascript 角度2输入绑定与字符串更改检测_Javascript_Angular - Fatal编程技术网

Javascript 角度2输入绑定与字符串更改检测

Javascript 角度2输入绑定与字符串更改检测,javascript,angular,Javascript,Angular,假设我有以下组件: class TestComponent { @Input() title; } 使用括号和不使用括号之间的更改检测是否存在差异 <test [title]="title"></test> <test [title]="'Component Title'"></test> <test title="Component Title"></test> 更准确地说,静态版本也将通过每次更改检测进

假设我有以下组件:

class TestComponent {
  @Input() title;
}
使用括号和不使用括号之间的更改检测是否存在差异

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


更准确地说,静态版本也将通过每次更改检测进行检查

因为您声明了
@Input
Angular将为它们创建绑定。 它将把它添加到在变更检测周期中调用的
updateDirectives
函数中

那么下面

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


这里的主要区别是角度读取
@Input
绑定,并为
title=“Title3”
大小写创建属性。如果您没有声明
@Input
,则只会创建属性。

感谢您的解释-已删除我的错误答案。我没有意识到,
@Input
有这样的隐式属性绑定-您是否碰巧引用了解释这一点的文档(可能还有它背后的逻辑?)?Title3===Title3或Title2===Title2?匹配所有
@输入都有一个逻辑。角度不区分它是否是静态属性。它只是对所有输入使用相同的代码。@undefined是的,对。至少在当前版本的angular中是这样的
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);
}