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

站長資訊網
最全最豐富的資訊網站

Angular學習之ControlValueAccessor接口詳解

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

Angular學習之ControlValueAccessor接口詳解

ControlValueAccessor 是什么?

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

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, {…
登錄后復制

為什么需要使用 ControlValueAccessor

有時,你可能需要創建自定義的表單元素,并希望它能和Angular的FormControl成功通信。這時你便需要ControlValueAccessor來實現這個目的。

比如:

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

<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>
登錄后復制

深入理解

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

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

其實原生表單控件也擁有類似于ControlValueAccessor的接口,比如:當 Angular 在組件模板中中遇到 input 或 textarea DOM 原生控件時,就會使用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 表單元素創建的 Angular 表單控件,即內置ControlValueAccessor

ControlValueAccessor 接口定義了四個方法:

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

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

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

  • setDisabledState(isDisabled: boolean):當調用 FormControl 變更狀態的 API 時得表單狀態變為 Disabled 時調用 setDisabledState() 方法,以通知自定義表單組件當前表單的讀寫狀態。

formControl 指令使用 writeValue 方法設置原生表單控件的值;使用 registerOnChange 方法來注冊由每次原生表單控件值更新時觸發的回調函數,我們需要把更新的值傳給這個回調函數,這樣對應的 Angular 表單控件值也會更新;使用 registerOnTouched 方法來注冊用戶和控件交互時觸發的回調。

Angular學習之ControlValueAccessor接口詳解

formControl會調用名為setUpControl的函數,ControlValueAccessor的實例valueAccessor會被作為參數傳入這個函數中。在setUpControl中,ControlValueAccessor的四個方法會在交互時被調用,以完成formControl和元素之間的通信。

拓展:

在使用ControlValueAccessor時需要一同引入NG_VALUE_ACCESSOR,它是使用InjectionToken 創建的可在 Provider 中使用的 Token。我們在編寫自己的項目時一般不需要用到InjectionToken,但是在一個框架或者第三方的插件中,它就變得十分有必要了。

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

試想當我使用依賴注入的功能時,我需要將我創建的依賴注冊進組件中。這時我就需要一個令牌,如果我使用一個字符串作為令牌就有可能會造成重復,相同的令牌會導致后面的覆蓋前面的。所以需要一個Token作為一個唯一值來防止這種沖突。

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

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
一级做a爱视频| 日韩黄色片视频| 女同性恋一区二区| 日韩精品手机在线观看| 少妇高潮喷水久久久久久久久久| 日韩爱爱小视频| 女人和拘做爰正片视频| 日韩av片免费观看| 浓精h攵女乱爱av| 国产极品尤物在线| 久久亚洲精品无码va白人极品| 天天色综合社区| 欧美 日韩 国产 激情| 久久视频这里有精品| 久久免费一级片| 久久人人爽人人片| 天堂v在线视频| 亚洲视频在线不卡| 中文字幕精品在线播放| youjizz.com亚洲| 久久久一二三四| 懂色av一区二区三区四区五区| 亚洲五月激情网| 色偷偷中文字幕| 欧美日韩dvd| 国产在线精品91| 农村妇女精品一二区| 国产一区二区视频免费在线观看| 东京热加勒比无码少妇| 中文字幕视频在线免费观看| 亚洲一区在线不卡| www.精品在线| 日本精品福利视频| 欧美一级免费在线观看| 久久国产精品免费观看| 欧美日韩福利在线| 国产一区二区视频播放| 日本熟妇人妻xxxxx| 日本中文字幕精品—区二区| 一级黄色高清视频| 欧美不卡在线播放| 亚洲精品永久视频| 大西瓜av在线| 天天操天天摸天天爽| 欧美性视频在线播放| 久久综合九色综合88i| 日本三级黄色网址| 亚洲综合激情五月| 成人一级片网站| 色综合五月婷婷| 另类小说第一页| 人妻av中文系列| 日韩成人手机在线| 日日夜夜精品视频免费观看| 黄色片在线免费| 91精品91久久久中77777老牛| 欧美少妇一级片| 成人av毛片在线观看| 成年人在线看片| 国产无套内射久久久国产| 日韩欧美猛交xxxxx无码| www.成年人| caoporm在线视频| 男人插女人下面免费视频| 9久久9毛片又大又硬又粗| 亚洲熟妇无码一区二区三区导航| 手机在线视频你懂的| 日本特级黄色大片| 男人的天堂成人| 日本女人高潮视频| 波多野结衣三级在线| 女同性恋一区二区| h无码动漫在线观看| 91免费黄视频| 国产一区亚洲二区三区| 东京热加勒比无码少妇| www.99av.com| 国产盗摄视频在线观看| 国产又粗又长又爽视频| 天堂8在线天堂资源bt| 日本熟妇人妻xxxx| 北条麻妃69av| 天天摸天天舔天天操| 一区二区三区四区免费观看| 欧美图片激情小说| 国产天堂在线播放| 中文字幕视频三区| 青青在线视频免费观看| 国产精品裸体瑜伽视频| 日韩中文字幕组| 亚洲综合20p| a级免费在线观看| 久久人妻精品白浆国产| 日本不卡一区二区三区四区| 男人的天堂视频在线| 国产成人无码一二三区视频| www.桃色.com| 欧美日韩在线中文| 欧美aaa在线观看| 久章草在线视频| 老司机午夜免费福利视频| 国产在线青青草| 老司机午夜免费福利视频| 日韩免费高清在线| 久久久天堂国产精品| 色综合天天色综合| av网站手机在线观看| 欧美激情第一区| 男人插女人下面免费视频| 2022中文字幕| 五月天六月丁香| 色噜噜狠狠一区二区| av动漫在线看| 日本黄大片在线观看| 一起操在线视频| 亚洲不卡视频在线| 日本三区在线观看| 青青在线免费观看| 日本一本草久p| 亚洲免费av一区| 日韩毛片在线免费看| 日韩人妻一区二区三区蜜桃视频| 国产精品一二三在线观看| 九九热免费在线观看| 黄页网站大全在线观看| 99在线精品免费视频| 米仓穗香在线观看| 91高清国产视频| 国产在线青青草| 99在线精品免费视频| 精品无码一区二区三区爱欲| 日本超碰在线观看| 久久精品免费网站| 男人和女人啪啪网站| 国产乱女淫av麻豆国产| 日本一区二区黄色| 精品无码一区二区三区在线| 久久精品一二三四| 热久久久久久久久| 永久免费黄色片| 爱爱爱爱免费视频| 精品久久久99| 天美星空大象mv在线观看视频| 精品久久久久久久免费人妻| 可以在线看的av网站| 国产真实老熟女无套内射| 三级网在线观看| 国产情侣av自拍| 国产精品自在自线| 五月天男人天堂| 日本一本草久p| 国产乱子伦精品无码专区| 国产男女在线观看| 日本va中文字幕| 中文字幕永久视频| 亚洲精品综合在线观看| 日本xxx免费| 国产一二三区在线播放| 国产自产在线视频| 凹凸国产熟女精品视频| 午夜免费看毛片| 色男人天堂av| 国产人妻人伦精品| 欧美精品99久久| 日本成人xxx| 欧妇女乱妇女乱视频| 国产精品又粗又长| 宅男噜噜噜66国产免费观看| 亚洲免费黄色网| 国产在线视频综合| 国产l精品国产亚洲区久久| 男人的天堂99| xxxxxx在线观看| 国产综合免费视频| 日韩成人精品视频在线观看| 国产成人三级视频| 999在线观看| 91专区在线观看| 色婷婷激情视频| 久久精品免费一区二区| 国产一区二区三区在线免费| www.亚洲天堂网| 伊人久久在线观看| 无码无遮挡又大又爽又黄的视频| www.69av| 久久国产激情视频| 成人免费观看视频在线观看| 拔插拔插华人永久免费| 一级特黄性色生活片| 国产二区视频在线| 欧美视频国产视频| 无码无遮挡又大又爽又黄的视频| 国产一区二区三区乱码| 亚洲欧美自拍另类日韩| 免费观看美女裸体网站| av五月天在线| 久草综合在线观看| 久久成人免费观看| 日韩xxxx视频| 国产av国片精品|