實現細節https://segmentfault.com/a/11... 寫的很清楚了,很是詳細可是我不太能看得懂,隨便寫寫,說不定寫着寫着就懂了
基本的原理就是react
- 實現一個組件,這個組件接受angular的 ngmodel 的模版驅動表單語法或者reactive form 響應式表單的語法。
- 接受angular form的語法的原理就是自定義的組件要實現 AbstractControl 接口。
- 首先明白 ngmodel 究竟是作了什麼事,太詳細的我講不出來事太多了,我理解就是兩個,ngmodel 是一個語法糖。 [(ngModel)]="value"的意思等於
<component-name [value]="value" (ngModelChange)="value = $event"></component-name>
- 而後在你的component 中監聽 value ,和你改變了數據 value 以後觸發 ngModelChange.emit(this.value) 事件通知給父組件之類的。可是他這裏提供的 api 實際上是 writeValue(value){}函數,接受的參數是外面傳入的value,每次value修改時會觸發writeValue函數。 而後
`
registerOnChange(fn: any) {
this.propagateChange = fn;
}
中的 fn 參數其實就是 ngModelChange.emit(this.value)。
segmentfault
寫到這裏我就更疑惑了,那爲何angular要設計這麼複雜的API呢,是爲了解決什麼場景嗎?沒法理解呀,好難哦,又是一篇中文垃圾api