2016-04-07 73 views
0

我知道我們使用在angular2中使用了什麼`[(()]`語法?

()

<div (click)="doSomething()"> 

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

{{}}檢測事件像

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

但什麼做模板變換變量字符串我們使用除了ng-model中的雙向綁定還有嗎?

是否有一個通用的用法?

+7

香蕉在一個盒子裏! –

+0

約翰帕帕是一個有趣的傢伙。 –

回答

3

這是雙向綁定。檢出他們的cheatsheet

設置雙向數據綁定。等效於:<my-cmp [title]="name" (titleChange)="name=$event">

0

當與NgModel使用,[()]設置了一個組件性能和DOM形式元件之間雙向數據綁定。我們對組件屬性所做的任何更改都會自動傳播到DOM,並且我們對錶單元素(即DOM)所做的任何更改都會自動傳播到組件屬性。

與組件一起使用時,[()]會在父組件屬性和子組件屬性之間建立雙向數據綁定。我們對父組件屬性所做的任何更改都會自動傳播到DOM。但是,我們對子組件屬性所做的任何更改都是而不是自動傳播到父項–我們必須使用emit()。所以它與NgModel有點不同。

子組件必須定義一個輸入屬性和一個輸出屬性,它是一個EventEmitter。如果輸入屬性名爲x,則輸出屬性必須命名爲xChange。子組件必須通過調用xChange.emit(newValue)明確發出對x的任何更改。

命名要求的原因是因爲[(childProp)]="parentProp"[childProp]="parentProp" (childPropChange)="parentProp=$event"的簡寫。

如果您需要在父項發出新值時執行某些邏輯,您需要使用展開的表單:[childProp]="parentProp" (childPropChange)="doSomething($event)"