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一区二区
久久人妻精品白浆国产| 中文字幕国产免费| 看一级黄色录像| av在线网站免费观看| 国产欧美一区二| www.51色.com| 先锋影音男人资源| 国产一二三四五| 欧美做暖暖视频| 国产主播自拍av| 日本三级免费观看| 婷婷六月天在线| 视频免费1区二区三区| 中文字幕亚洲影院| 色黄视频免费看| 欧美性猛交内射兽交老熟妇| 免费的av在线| 欧美日韩性生活片| 一级特黄性色生活片| 国产aⅴ爽av久久久久| 天天操精品视频| 国产 国语对白 露脸| 伊人成色综合网| 男女污污的视频| 蜜臀av.com| 男人操女人免费软件| 色免费在线视频| 日韩美女爱爱视频| 天天干天天草天天| 青青草国产免费| 九九热免费精品视频| 穿情趣内衣被c到高潮视频| 秋霞无码一区二区| 亚洲精品性视频| 日韩成人三级视频| 国内自拍视频一区| 2018中文字幕第一页| 色综合天天色综合| 九九爱精品视频| 91性高潮久久久久久久| 玩弄中年熟妇正在播放| 日本高清久久久| 农村妇女精品一二区| 国产一二三四五| 亚洲国产成人va在线观看麻豆| 人人妻人人做人人爽| 不卡中文字幕在线观看| 日本福利视频在线| 超薄肉色丝袜足j调教99| 午夜免费福利在线| 久久婷婷国产精品| 久久手机在线视频| 麻豆一区二区三区在线观看| 中文字幕第80页| 欧美色图另类小说| 免费视频爱爱太爽了| 在线一区二区不卡| 99sesese| www.com操| 色综合色综合色综合色综合| 久久久久人妻精品一区三寸| 久无码久无码av无码| 久久久久久久9| 性一交一乱一伧国产女士spa| 日韩av影视大全| 特级毛片在线免费观看| 久久久久久久久久久久久久久国产| 欧美日韩第二页| 亚欧在线免费观看| 波多野结衣天堂| 中文字幕在线导航| 999久久久精品视频| 国产三级三级看三级| 香蕉视频网站入口| www.com黄色片| 国内外成人免费在线视频| 视频免费1区二区三区| 精品国产乱码久久久久久1区二区 91网址在线观看精品 | 香蕉视频在线网址| 蜜臀一区二区三区精品免费视频| 成人免费在线观看视频网站| 天天干天天玩天天操| 国产免费中文字幕| 樱空桃在线播放| av在线播放天堂| 能在线观看的av网站| 中文字幕第88页| 精品久久免费观看| 蜜臀av色欲a片无码精品一区 | 欧美日韩一道本| 欧美牲交a欧美牲交aⅴ免费真| 久久久久免费精品| 欧美成人手机在线视频| 无码熟妇人妻av在线电影| 日本精品一区在线观看| 久久久久久久久久一区二区| 欧美少妇在线观看| 国产视频一区二区三区在线播放| 中文字幕亚洲乱码| 日本人体一区二区| 57pao国产成永久免费视频| 黄网站色视频免费观看| 亚洲欧美日韩一级| 国产aaa免费视频| 在线观看岛国av| 国产免费毛卡片| 国产成人亚洲综合无码| 久久婷婷综合色| 男人日女人逼逼| 国产 国语对白 露脸| 婷婷免费在线观看| 黄色一级片播放| 国产盗摄视频在线观看| 最新中文字幕免费视频| 好吊妞无缓冲视频观看| 免费在线观看污网站| 99久久国产宗和精品1上映| 亚洲天堂第一区| 日本特级黄色大片| 依人在线免费视频| 狠狠热免费视频| 欧美韩国日本在线| 国产综合中文字幕| 97中文字幕在线| 国产a级黄色大片| 黄色a级在线观看| 九九九九九伊人| 网站在线你懂的| 91网址在线观看精品| 亚洲综合婷婷久久| 538任你躁在线精品免费| 日韩av资源在线| 激情五月亚洲色图| 日韩欧美精品在线观看视频| 无码专区aaaaaa免费视频| 日韩精品一区在线视频| 久久人妻无码一区二区| 欧美做暖暖视频| 久久久久99精品成人片| avav在线播放| 免费黄色日本网站| 成人一区二区三| 亚洲视频一二三四| 久久精品国产精品亚洲精品色| 在线观看av免费观看| 久久久久福利视频| www插插插无码免费视频网站| 亚洲国产一二三精品无码 | 成年人视频大全| 狠狠干 狠狠操| 久草福利视频在线| 免费网站在线观看黄| 男人天堂网站在线| 日韩av黄色网址| 国产成年人视频网站| 国产免费内射又粗又爽密桃视频| 日本一区午夜艳熟免费| av动漫免费看| 国产高清av片| 日韩日韩日韩日韩日韩| 污污的网站18| 日韩黄色片在线| 亚洲精品自拍网| 日本福利视频一区| 午夜剧场在线免费观看| 久草视频这里只有精品| 爱情岛论坛vip永久入口| 精品久久免费观看| www一区二区www免费| 1314成人网| 天天天干夜夜夜操| 日本熟妇人妻xxxx| 国产3p在线播放| 久热免费在线观看| 国产成人免费高清视频| 日韩av卡一卡二| 日本wwww视频| 黄色一级片黄色| 熟女熟妇伦久久影院毛片一区二区| 久久久999免费视频| 男女裸体影院高潮| 中文字幕一区二区在线观看视频| 免费av观看网址| 国产av熟女一区二区三区| www.污污视频| 国产又黄又猛又粗| aaa毛片在线观看| 岛国大片在线播放| 成年人视频网站免费| 青娱乐精品在线| 色www免费视频| 午夜视频你懂的| 日韩欧美xxxx| 8x8x最新地址| 亚洲第一中文av| 一级片视频免费观看| 久久99爱视频| 加勒比av中文字幕| 性欧美在线视频| 亚洲综合在线一区二区|