我知道我們使用在angular2中使用了什麼`[(()]`語法?
()
像
<div (click)="doSomething()">
或
<div (blur)="doSomethingElse()">
和{{}}
檢測事件像
<div>{{a_variable_i_want_to_show}}</div>
但什麼做模板變換變量字符串我們使用除了ng-model中的雙向綁定還有嗎?
是否有一個通用的用法?
我知道我們使用在angular2中使用了什麼`[(()]`語法?
()
像
<div (click)="doSomething()">
或
<div (blur)="doSomethingElse()">
和{{}}
檢測事件像
<div>{{a_variable_i_want_to_show}}</div>
但什麼做模板變換變量字符串我們使用除了ng-model中的雙向綁定還有嗎?
是否有一個通用的用法?
這是雙向綁定。檢出他們的cheatsheet:
設置雙向數據綁定。等效於:
<my-cmp [title]="name" (titleChange)="name=$event">
當與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)"
。
香蕉在一個盒子裏! –
約翰帕帕是一個有趣的傢伙。 –