在angular2中使用的是什么`[()]`语法?

时间:2016-04-07 22:15:31

标签: javascript typescript angular

我知道我们使用

()用于检测

等事件
 <div (click)="doSomething()">

 <div (blur)="doSomethingElse()">

{{}}用于将变量转换为模板中的字符串,如

<div>{{a_variable_i_want_to_show}}</div>

但除了ng-model中的双向绑定外,我们还使用[()]做什么?

是否有通用用法?

2 个答案:

答案 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)"