gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

Angular學(xué)習(xí)之ControlValueAccessor接口詳解

ControlValueAccessor 是什么?為什么需要使用 ?下面本篇文章就來帶大家了解Angular中的ControlValueAccessor組件接口,希望對(duì)大家有所幫助!

Angular學(xué)習(xí)之ControlValueAccessor接口詳解

ControlValueAccessor 是什么?

簡單來說ControlValueAccessor是一個(gè)接口,它被用于在 Angular 的 FormControl 實(shí)例和原生 DOM 元素之間創(chuàng)建一個(gè)橋梁。其使用方式和OnInit類似,需要程序員在自定義組件里面實(shí)現(xiàn)相應(yīng)的方法。

import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';  @Component({     selector: 'custom',     templateUrl: './custom.component.html',     styleUrls: ['./custom.component.less'],     providers: [            {         provide: NG_VALUE_ACCESSOR,          useExisting: forwardRef(() => CustomComponent),         multi: true            }        ] }) export class CustomComponent implements ControlValueAccessor, OnInit, {…
登錄后復(fù)制

為什么需要使用 ControlValueAccessor

有時(shí),你可能需要?jiǎng)?chuàng)建自定義的表單元素,并希望它能和Angular的FormControl成功通信。這時(shí)你便需要ControlValueAccessor來實(shí)現(xiàn)這個(gè)目的。

比如:

this.myForm = new FormGroup({     userName: new FormControl({value: '', disabled: false}) });
登錄后復(fù)制

<form [formGroup]="myForm" (ngSubmit)="onSubmit()">     <div class="form-group">         <label>             Name:             <my-input formControlName="userName"></my-input>         </label>     </div>     <div class="form-group">         <button type="submit">Submit</button>     </div> </form>
登錄后復(fù)制

深入理解

ControlValueAccessor的使用方法在Angular官網(wǎng)和很多的文章中都有介紹,但是它具體是如何起作用的呢?

Angular 需要一種通用機(jī)制來橋接原生/自定義表單控件和 formControl 指令,而這正是 ControlValueAccessor 干的事情。這個(gè)對(duì)象橋接原生表單控件和 formControl 指令,并同步兩者的值。任何一個(gè)組件或指令都可以通過實(shí)現(xiàn) ControlValueAccessor 接口并注冊(cè)為 NG_VALUE_ACCESSOR,從而轉(zhuǎn)變成 ControlValueAccessor 類型的對(duì)象。

其實(shí)原生表單控件也擁有類似于ControlValueAccessor的接口,比如:當(dāng) Angular 在組件模板中中遇到 input 或 textarea DOM 原生控件時(shí),就會(huì)使用DefaultValueAccessor 指令

Accessor

Form Element

DefaultValueAccessor

input,textarea

CheckboxControlValueAccessor

input[type=checkbox]

NumberValueAccessor

input[type=number]

RadioControlValueAccessor

input[type=radio]

RangeValueAccessor

input[type=range]

SelectControlValueAccessor

select

SelectMultipleControlValueAccessor

select[multiple]

以上是Angular 為所有原生 DOM 表單元素創(chuàng)建的 Angular 表單控件,即內(nèi)置ControlValueAccessor

ControlValueAccessor 接口定義了四個(gè)方法:

  • writeValue(obj:any):將表單模型中的新值寫入視圖或DOM屬性(如果需要)的方法,它將來自外部的數(shù)據(jù)寫入到內(nèi)部的數(shù)據(jù)模型。

  • registerOnChange(fn:any):一種注冊(cè)處理程序的方法,當(dāng)視圖中的某些內(nèi)容發(fā)生更改時(shí)應(yīng)調(diào)用該處理程序。它具有一個(gè)告訴其他表單指令和表單控件以更新其值的函數(shù)。通常在 registerOnChange 中需要保存該事件觸發(fā)函數(shù),在數(shù)據(jù)改變的時(shí)候,可以通過調(diào)用事件觸發(fā)函數(shù)通知外部數(shù)據(jù)變了,同時(shí)可以將修改后的數(shù)據(jù)作為參數(shù)傳遞出去。

  • registerOnTouched(fn: any):注冊(cè) onTouched 事件,基本同 registerOnChange ,只是該函數(shù)用于通知表單組件已經(jīng)處于 touched 狀態(tài),改變綁定的 FormControl 的內(nèi)部狀態(tài)。

  • setDisabledState(isDisabled: boolean):當(dāng)調(diào)用 FormControl 變更狀態(tài)的 API 時(shí)得表單狀態(tài)變?yōu)?Disabled 時(shí)調(diào)用 setDisabledState() 方法,以通知自定義表單組件當(dāng)前表單的讀寫狀態(tài)。

formControl 指令使用 writeValue 方法設(shè)置原生表單控件的值;使用 registerOnChange 方法來注冊(cè)由每次原生表單控件值更新時(shí)觸發(fā)的回調(diào)函數(shù),我們需要把更新的值傳給這個(gè)回調(diào)函數(shù),這樣對(duì)應(yīng)的 Angular 表單控件值也會(huì)更新;使用 registerOnTouched 方法來注冊(cè)用戶和控件交互時(shí)觸發(fā)的回調(diào)。

Angular學(xué)習(xí)之ControlValueAccessor接口詳解

formControl會(huì)調(diào)用名為setUpControl的函數(shù),ControlValueAccessor的實(shí)例valueAccessor會(huì)被作為參數(shù)傳入這個(gè)函數(shù)中。在setUpControl中,ControlValueAccessor的四個(gè)方法會(huì)在交互時(shí)被調(diào)用,以完成formControl和元素之間的通信。

拓展:

在使用ControlValueAccessor時(shí)需要一同引入NG_VALUE_ACCESSOR,它是使用InjectionToken 創(chuàng)建的可在 Provider 中使用的 Token。我們?cè)诰帉懽约旱捻?xiàng)目時(shí)一般不需要用到InjectionToken,但是在一個(gè)框架或者第三方的插件中,它就變得十分有必要了。

export const NG_VALUE_ACCESSOR =     new InjectionToken<ReadonlyArray<ControlValueAccessor>>('NgValueAccessor');
登錄后復(fù)制

試想當(dāng)我使用依賴注入的功能時(shí),我需要將我創(chuàng)建的依賴注冊(cè)進(jìn)組件中。這時(shí)我就需要一個(gè)令牌,如果我使用一個(gè)字符串作為令牌就有可能會(huì)造成重復(fù),相同的令牌會(huì)導(dǎo)致后面的覆蓋前面的。所以需要一個(gè)Token作為一個(gè)唯一值來防止這種沖突。

providers: [{ provide: TOKEN, useValue: … }]
登錄后復(fù)制

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
欧美v在线观看| xxww在线观看| 日本a在线天堂| 欧美又黄又嫩大片a级| 久久婷五月综合| 成年人三级黄色片| 免费av不卡在线| 亚洲天堂一区二区在线观看| 成人性生交免费看| 成年人网站av| 国产 欧美 日本| 亚洲熟妇无码一区二区三区| 3d动漫一区二区三区| 噜噜噜久久亚洲精品国产品麻豆| 国自产拍偷拍精品啪啪一区二区 | 在线视频日韩一区| 色悠悠久久综合网| 国产高清999| 影音先锋男人的网站| 成年人视频网站免费| 水蜜桃色314在线观看| 人妻内射一区二区在线视频| 中文字幕在线观看第三页| 57pao国产成永久免费视频| 福利网在线观看| 国产视频一视频二| 亚欧美在线观看| www.亚洲成人网| 自拍偷拍 国产| 五月天激情图片| 青青青国产在线视频| 欧美日韩一级在线| 欧美成人免费高清视频| 一区二区三区四区久久| 亚洲熟妇国产熟妇肥婆| www.午夜av| 日本三级免费观看| 大地资源网在线观看免费官网| 少妇高潮喷水在线观看| 九九久久久久久| www.国产区| 成人免费在线网| 91国内在线播放| 免费激情视频在线观看| 粉嫩av一区二区三区天美传媒| 狠狠操精品视频| 9久久9毛片又大又硬又粗| 日韩av影视大全| 国产又黄又猛的视频| 熟女性饥渴一区二区三区| 国产一二三在线视频| 伊人免费视频二| 一区二区在线免费看| 亚洲爆乳无码专区| 黄色片网址在线观看| 青青青在线观看视频| 国产精品无码乱伦| 久久婷婷中文字幕| 我要看一级黄色大片| 狠狠爱免费视频| 日本wwww视频| 国产免费黄视频| 日本日本19xxxⅹhd乱影响| 轻点好疼好大好爽视频| 少妇高潮大叫好爽喷水| 99精品视频网站| √天堂资源在线| 国内精品国产三级国产aⅴ久| 亚洲美女性囗交| 911av视频| 奇米777在线视频| 午夜影院免费版| 91看片淫黄大片91| 青青草综合视频| 黄色三级中文字幕| 国产精品又粗又长| 无码播放一区二区三区| 国产成人精品视频ⅴa片软件竹菊| 男人揉女人奶房视频60分| 免费黄色特级片| 三日本三级少妇三级99| 色偷偷中文字幕| 国产精品视频网站在线观看| 草b视频在线观看| 女性隐私黄www网站视频| 日本黄大片一区二区三区| 中文字幕超清在线免费观看| 婷婷无套内射影院| 日本女优爱爱视频| 午夜激情影院在线观看| 亚洲熟妇无码一区二区三区导航| 成人毛片视频网站| 午夜久久福利视频| 精品国产av无码一区二区三区| 欧洲黄色一级视频| 91精产国品一二三产区别沈先生| 91免费国产精品| 99草草国产熟女视频在线| 日本中文字幕在线不卡| 男人用嘴添女人下身免费视频| 日韩一级理论片| 成人免费在线网| 99热一区二区| 日韩激情免费视频| 日本特级黄色大片| 成年人小视频网站| 欧美一级视频免费看| 在线观看国产一级片| 日韩少妇内射免费播放18禁裸乳| 久久国产精品国产精品| 草草久久久无码国产专区| 日韩 欧美 自拍| 天堂在线中文在线| 国产一线二线三线在线观看| 日本精品福利视频| 国产资源中文字幕| 久久婷五月综合| 六月丁香婷婷激情| www污在线观看| 无颜之月在线看| 婷婷视频在线播放| 校园春色 亚洲色图| av之家在线观看| 2018日日夜夜| 黄色录像特级片| 国产探花在线观看视频| 亚洲免费999| 色噜噜狠狠一区二区| 中文字幕av专区| 99sesese| 日韩精品aaa| 亚洲精品视频三区| 国产乱码一区二区三区四区| 亚洲第一狼人区| 爱爱爱爱免费视频| theporn国产精品| 超碰97免费观看| 4444亚洲人成无码网在线观看| 黄色www在线观看| 成人毛片100部免费看| 男女裸体影院高潮| 人妻无码久久一区二区三区免费| 波多野结衣av一区二区全免费观看| 国产三级中文字幕| 成人一级生活片| 日本熟妇人妻xxxxx| 黄色片在线免费| 青春草在线视频免费观看| 欧美日韩中文字幕在线播放| 麻豆传媒网站在线观看| 精品国产一区三区| 成年人免费大片| 不卡的av中文字幕| 最新av网址在线观看| 日本韩国欧美在线观看| 五月婷婷激情久久| 一本二本三本亚洲码 | 特级西西444| 国产精品一区二区免费在线观看| 欧美成人免费高清视频| 欧美又黄又嫩大片a级| 国产日韩av网站| 五月天丁香花婷婷| 午夜免费福利小电影| 国产精品久久a| 男人天堂手机在线视频| 国产精品区在线| 精品国产一二三四区| 一级黄色片国产| 国产又黄又猛视频| 少妇久久久久久被弄到高潮| 激情五月亚洲色图| 国产自产在线视频| 亚洲欧美日韩一二三区| 日韩av一二三四区| 中国 免费 av| 日韩av在线中文| 国产主播在线看| 丁香色欲久久久久久综合网| 视频二区在线播放| 成年人视频网站免费观看| 潘金莲一级淫片aaaaa免费看| 国产成人综合一区| 乱妇乱女熟妇熟女网站| 日韩精品一区二区三区四| 亚洲精品成人在线播放| 免费无码不卡视频在线观看| 日本一道在线观看| 天天做天天爱天天高潮| 一级做a免费视频| 人人干人人干人人| 中文字幕第80页| 无码少妇一区二区三区芒果| 欧美精品一区免费| 久久久久久久久久久99| 日本福利视频网站| 男人日女人的bb| youjizz.com在线观看| 三上悠亚免费在线观看| 欧美 国产 精品|