欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Angular2 自定義validators的實現(xiàn)方法

 更新時間:2017年07月05日 08:34:20   作者:何欣澄  
angular 當需要form表單需要驗證時,angular自帶了許多校驗器,但是很多時候自帶的無法滿足業(yè)務需求,這時候就需要自定義的校驗器,下面通過本文給大家分享Angular2 自定義validators的實現(xiàn)方法,需要的朋友參考下吧

angular 當需要form表單需要驗證時,angular自帶了許多校驗器,但是很多時候自帶的無法滿足業(yè)務需求,這時候就需要自定義的校驗器

定義一個validator

定義validator 需要實現(xiàn) ValidatorFn 接口

源碼:

export interface ValidatorFn {
  (c: AbstractControl): ValidationErrors | null;
}

接收一個 AbstractControl 返回 ValidationErrors 或者null

ValidationErrors 源碼

export declare type ValidationErrors = {
  [key: string]: any;
};

這其實就是返回一個 key value 類型的對象,這個對象會在驗證信息不通過的時候賦值給 formControl.errors

寫好的Validator 需要在創(chuàng)建FormControl作為參數(shù)傳入

FormControl 的構(gòu)造器源碼

export declare class FormControl extends AbstractControl {
  constructor(formState?: any, validator?: ValidatorFn | ValidatorFn[] | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);

下面是個簡單的例子(校驗郵箱地址):

定義一個返回 ValidatorFn 接口的方法

static EMAIL_REG = new RegExp('\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}');
static email(): ValidatorFn {
  return (control: AbstractControl): { [key: string]: any } => { ①
   if (!EMAIL_REG.test(control.value)) { ②
    return { ③
     errMsg: '請輸入正確的郵箱地址'
    };
   }
   return {}; ④
  };
 }

① 方法返回 ValidatorFn 的實例

② 判斷是否符合郵箱正則表達式

③ 如果不符合 返回一個 ValidationErrors 對象,errMsg 作為錯誤信息輸出 (這里也可以再加一個 布爾型的作為判斷)

④ 如果校驗成功返回一個空的對象

傳入校驗器

email = new FormControl('', email())

模板:

<p *ngIf = "!email.valid && email.touched">{{email.errors.errMsg}}</p>

當郵箱格式不正確時 這里就會顯示 ‘請輸入正確的郵箱地址'

至此一個簡單的校驗器就完成了。

如果想比較2個form的值是否相等的話只需要做一些小的改變

static EMAIL_REG = new RegExp('\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}');
static email(emailForm: FormControl): ValidatorFn { ①
  return (control: AbstractControl): { [key: string]: any } => { 
   if (emailForm.value !== control.value ) { 
    return { 
     errMsg: '請輸入相同郵箱地址'
    };
   }
   return {}; 
  };
 }

① 只需要在這里傳入另一個需要做對比的 formControl 即可

email = new FormControl('', email())
email2 = new FormControl('', email(email))

以上所述是小編給大家介紹的Angular2 自定義validators的實現(xiàn)方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用 Github Actions 自動部署 Angular 應用到 Github Pages的方法

    使用 Github Actions 自動部署 Angular 應用到 Github Pages的方法

    這篇文章主要介紹了使用 Github Actions 自動部署 Angular 應用到 Github Pages,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Angular2 父子組件數(shù)據(jù)通信實例

    Angular2 父子組件數(shù)據(jù)通信實例

    這篇文章主要介紹了Angular2 父子組件數(shù)據(jù)通信實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • angularjs實現(xiàn)分頁和搜索功能

    angularjs實現(xiàn)分頁和搜索功能

    這篇文章主要介紹了angularjs實現(xiàn)分頁和搜索功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • angularJS自定義directive之帶參方法傳遞詳解

    angularJS自定義directive之帶參方法傳遞詳解

    今天小編就為大家分享一篇angularJS自定義directive之帶參方法傳遞詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • AngularJS中的過濾器filter用法完全解析

    AngularJS中的過濾器filter用法完全解析

    這篇文章主要介紹了AngularJS中的過濾器filter用法,包括Angular中一些常用的自帶的過濾器的列舉以及自定義filter的方法,需要的朋友可以參考下
    2016-04-04
  • Angular2實現(xiàn)的秒表及改良版示例

    Angular2實現(xiàn)的秒表及改良版示例

    這篇文章主要介紹了Angular2實現(xiàn)的秒表及改良版,結(jié)合實例形式分析 Angular2實現(xiàn)秒表功能的原理、操作技巧與相關(guān)注意事項,需要的朋友可以參考下
    2019-05-05
  • angular2中Http請求原理與用法詳解

    angular2中Http請求原理與用法詳解

    這篇文章主要介紹了angular2中Http請求原理與用法,結(jié)合實例形式分析了AngularJS中http相關(guān)模塊實現(xiàn)http服務請求與相應的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Angular.js項目中使用gulp實現(xiàn)自動化構(gòu)建以及壓縮打包詳解

    Angular.js項目中使用gulp實現(xiàn)自動化構(gòu)建以及壓縮打包詳解

    基于流的前端自動化構(gòu)建工具,利用gulp可以提高前端開發(fā)效率,特別是在前后端分離的項目中。下面這篇文章主要給大家介紹了關(guān)于在Angular.js項目中使用gulp實現(xiàn)自動化構(gòu)建以及壓縮打包的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • Angular 常用指令實例總結(jié)整理

    Angular 常用指令實例總結(jié)整理

    這篇文章主要介紹了Angular 常用指令實例總結(jié)整理的相關(guān)資料,本文整理了常用指令,大家可以參考使用,需要的朋友可以參考下
    2016-12-12
  • Angular-UI Bootstrap組件實現(xiàn)警報功能

    Angular-UI Bootstrap組件實現(xiàn)警報功能

    這篇文章主要介紹了Angular-UI Bootstrap組件實現(xiàn)警報功能,對Angular.js services的學習有所幫助,需要的朋友可以參考下
    2018-07-07

最新評論