最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angular 實(shí)現(xiàn)同步驗(yàn)證器跨字段驗(yàn)證的方法

 更新時(shí)間:2019年04月11日 09:12:28   作者:陳杰  
幾乎每個(gè)web應(yīng)用都會(huì)用到表單,那么驗(yàn)證器就是必不可少的東西,這篇文章主要介紹了angular 實(shí)現(xiàn)同步驗(yàn)證器跨字段驗(yàn)證的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

幾乎每個(gè)web應(yīng)用都會(huì)用到表單,Angular 為我們提供了幾個(gè)內(nèi)置 validators (驗(yàn)證器),但在實(shí)際工作中為了滿足項(xiàng)目需求,我們經(jīng)常需要為應(yīng)用添加一些自定義驗(yàn)證功能。

angular內(nèi)置驗(yàn)證器

  • required - 表單控件值非空
  • email - 表單控件值的格式是 email
  • minlength - 表單控件值的最小長(zhǎng)度
  • maxlength - 表單控件值的最大長(zhǎng)度
  • pattern - 表單控件的值需匹配 pattern 對(duì)應(yīng)的模式(正則表達(dá)式)

需求:設(shè)置成績(jī)占比時(shí),如果總占比不是100%,則無法通過驗(yàn)證。

分析:需求很簡(jiǎn)單,只需要寫一個(gè)驗(yàn)證器即可,由于不需要訪問后臺(tái),且驗(yàn)證器與三個(gè)字段有關(guān),所以是同步跨字段驗(yàn)證。

實(shí)現(xiàn)驗(yàn)證器

首先,去官網(wǎng)上找示例代碼:

export const identityRevealedValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => {
 const name = control.get('name');
 const alterEgo = control.get('alterEgo');

 return name && alterEgo && name.value === alterEgo.value ? { 'identityRevealed': true } : null;
};

解釋:這個(gè)身份驗(yàn)證器實(shí)現(xiàn)了 ValidatorFn 接口。它接收一個(gè) Angular 表單控件對(duì)象作為參數(shù),當(dāng)表單有效時(shí),它返回一個(gè) null,否則返回 ValidationErrors 對(duì)象。

從上可知,所謂跨字段,就是從驗(yàn)證表單單個(gè)控件formControl變成了驗(yàn)證整個(gè)表單formGroup了,而formGroup的每個(gè)字段就是formControl。

明白了這個(gè)原理,就是根據(jù)需求進(jìn)行改寫:

  // 判斷總占比是否等于100
  export const scoreWeightSumValidator: ValidatorFn = (formGroup: FormGroup): ValidationErrors | null => {
  const sumLegal = formGroup.get('finalScoreWeight')
    .value + formGroup.get('middleScoreWeight')
    .value + formGroup.get('usualScoreWeight')
    .value === 100;
    // 如果是,返回一個(gè) null,否則返回 ValidationErrors 對(duì)象。
  return sumLegal ? null : {'scoreWeightSum': true};
};

到此,驗(yàn)證器已經(jīng)寫完。

添加到響應(yīng)式表單

給要驗(yàn)證的 FormGroup 添加驗(yàn)證器,就要在創(chuàng)建時(shí)把一個(gè)新的驗(yàn)證器傳給它的第二個(gè)參數(shù)。

  ngOnInit(): void {
  this.scoreSettingAddFrom = this.fb.group({
    finalScoreWeight: [null, [Validators.required, scoreWeightValidator]],
    fullScore: [null, [Validators.required]],
    middleScoreWeight: [null, [Validators.required, scoreWeightValidator]],
    name: [null, [Validators.required]],
    passScore: [null, [Validators.required]],
    priority: [null, [Validators.required]],
    usualScoreWeight: [null, [Validators.required, scoreWeightValidator]],
  }, {validators: scoreWeightSumValidator});
}

添加錯(cuò)誤提示信息

我使用的是ng-zorro框架,當(dāng)三個(gè)成績(jī)占比均輸入時(shí),觸發(fā)驗(yàn)證

  <nz-form-item nz-row>
  <nz-form-control nzValidateStatus="error" nzSpan="12" nzOffset="6">
    <nz-form-explain
      *ngIf="scoreSettingAddFrom.errors?.scoreWeightSum &&
       scoreSettingAddFrom.get('middleScoreWeight').dirty &&
       scoreSettingAddFrom.get('finalScoreWeight').dirty &&
       scoreSettingAddFrom.get('usualScoreWeight').dirty">成績(jī)總占比需等于100%!
    </nz-form-explain>
  </nz-form-control>
</nz-form-item>

效果:

總結(jié)

總的來說這個(gè)驗(yàn)證器實(shí)現(xiàn)起來不算很難,就是讀懂官方文檔,然后根據(jù)自己的需求進(jìn)行改寫。

參考文檔:angular表單驗(yàn)證 跨字段驗(yàn)證

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Angular.js中ng-if、ng-show和ng-hide的區(qū)別介紹

    Angular.js中ng-if、ng-show和ng-hide的區(qū)別介紹

    angularJS中的ng-show、ng-hide、ng-if指令都可以用來控制dom元素的顯示或隱藏。那么這篇文章就給大家主要介紹了Angular.js中ng-if、ng-show和ng-hide的區(qū)別,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Angular發(fā)布1.5正式版,專注于向Angular 2的過渡

    Angular發(fā)布1.5正式版,專注于向Angular 2的過渡

    Angular團(tuán)隊(duì)最近發(fā)布了Angular 1.5的正式版,該版本實(shí)現(xiàn)了一次重大的升級(jí),它讓仍在使用1.X版本的開發(fā)者將能夠更容易地過渡到Angular 2的開發(fā)
    2016-02-02
  • ui-router中使用ocLazyLoad和resolve的具體方法

    ui-router中使用ocLazyLoad和resolve的具體方法

    這篇文章主要介紹了ui-router中使用ocLazyLoad和resolve的具體方法,詳細(xì)的介紹了ocLazyLoad和resolve的具體用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • angularJS實(shí)現(xiàn)表格部分列展開縮起示例代碼

    angularJS實(shí)現(xiàn)表格部分列展開縮起示例代碼

    這篇文章主要介紹了angularJS實(shí)現(xiàn)表格部分列展開縮起示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • AngularJs基本特性解析(一)

    AngularJs基本特性解析(一)

    angularjs是javascript的一個(gè)框架,通過script標(biāo)簽添加到網(wǎng)頁(yè)中。這篇文章主要介紹了AngularJs基本特性解析(一)的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • 使用ionic播放輪詢廣告的實(shí)現(xiàn)方法(必看)

    使用ionic播放輪詢廣告的實(shí)現(xiàn)方法(必看)

    下面小編就為大家?guī)硪黄褂胕onic播放輪詢廣告的實(shí)現(xiàn)方法(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • AngularJS 簡(jiǎn)單應(yīng)用實(shí)例

    AngularJS 簡(jiǎn)單應(yīng)用實(shí)例

    本文主要介紹AngularJS 的簡(jiǎn)單應(yīng)用實(shí)例,這里對(duì)AngularJS的知識(shí)總結(jié),并提供實(shí)例代碼和應(yīng)用程序講解,有需要的小伙伴可以參考下
    2016-07-07
  • Angularjs Promise實(shí)例詳解

    Angularjs Promise實(shí)例詳解

    Promise是一個(gè)構(gòu)造函數(shù),自己身上有all、reject、resolve這幾個(gè)異步方式處理值的方法,原型上有then、catch等同樣很眼熟的方法,下面通過實(shí)例代碼給大家講解angularjs promise 的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2018-03-03
  • Angular2學(xué)習(xí)教程之ng中變更檢測(cè)問題詳解

    Angular2學(xué)習(xí)教程之ng中變更檢測(cè)問題詳解

    這篇文章主要給大家介紹了Angular2學(xué)習(xí)教程之ng中變更檢測(cè)問題的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 利用angular.copy取消變量的雙向綁定與解析

    利用angular.copy取消變量的雙向綁定與解析

    眾所周知AngularJS的雙向綁定在表單應(yīng)用中強(qiáng)大又方便,但是偶爾會(huì)遇到需要解除對(duì)象變量的雙向綁定。Angular提供的angular.copy的方法可以實(shí)現(xiàn)解除雙向綁定。所以這篇文章就來給大家詳細(xì)的介紹下angular.copy,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11

最新評(píng)論

城市| 大渡口区| 合水县| 老河口市| 乐昌市| 河津市| 盈江县| 鹤壁市| 观塘区| 常宁市| 旬阳县| 乃东县| 云阳县| 黑龙江省| 墨竹工卡县| 奉新县| 博湖县| 左权县| 阜城县| 孙吴县| 澄城县| 高清| 固镇县| 灵武市| 上饶县| 普定县| 东乡县| 新蔡县| 株洲县| 曲周县| 磐安县| 南宁市| 广东省| 彭水| 广饶县| 礼泉县| 绥宁县| 农安县| 抚顺市| 铜梁县| 正定县|