我知道我们使用
()
用于检测
<div (click)="doSomething()">
或
<div (blur)="doSomethingElse()">
和{{}}
用于将变量转换为模板中的字符串,如
<div>{{a_variable_i_want_to_show}}</div>
但除了ng-model中的双向绑定外,我们还使用[()]
做什么?
是否有通用用法?
答案 0 :(得分:3)
这是双向绑定。查看他们的cheatsheet:
设置双向数据绑定。相当于:
<my-cmp [title]="name" (titleChange)="name=$event">
答案 1 :(得分:0)
与NgModel一起使用时,[()]
在组件属性和DOM表单元素之间设置双向数据绑定。我们对组件属性所做的任何更改都会自动传播到DOM,我们对表单元素(即DOM)所做的任何更改都会自动传播到组件属性。
与组件一起使用时,[()]
设置父组件属性和子组件属性之间的双向数据绑定。我们对父组件属性所做的任何更改都会自动传播到DOM。但是,我们对子组件属性所做的任何更改不会自动传播到父级 - 我们必须使用emit()
。所以它与NgModel有点不同。
子组件必须定义输入属性和输出属性,即EventEmitter。如果input属性名为x
,则输出属性必须命名为xChange
。子组件必须通过调用x
明确地向xChange.emit(newValue)
发出任何更改。
命名要求的原因是[(childProp)]="parentProp"
是[childProp]="parentProp" (childPropChange)="parentProp=$event"
的简写。
如果您需要在从子项发出新值时在父项中执行某些逻辑,那么您将要使用展开的表单:[childProp]="parentProp" (childPropChange)="doSomething($event)"
。