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);
}