国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Angular2 自定義validators的實現方法

2024-05-06 15:14:53
字體:
來源:轉載
供稿:網友

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

定義一個validator

定義validator 需要實現 ValidatorFn 接口

源碼:

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

接收一個 AbstractControl 返回 ValidationErrors 或者null

ValidationErrors 源碼

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

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

寫好的Validator 需要在創建FormControl作為參數傳入

FormControl 的構造器源碼

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的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對錯新站長站網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 上思县| 宜春市| 临朐县| 汝城县| 航空| 保康县| 芜湖县| 黔南| 泰兴市| 康马县| 麦盖提县| 吴旗县| 河西区| 修水县| 德化县| 青浦区| 江永县| 乌兰察布市| 东乡| 镇安县| 平和县| 丹巴县| 昭平县| 台山市| 凤城市| 迭部县| 宁乡县| 勐海县| 岐山县| 甘孜| 天津市| 杨浦区| 张家界市| 米脂县| 眉山市| 乐亭县| 信阳市| 丹寨县| 镇康县| 海晏县| 九寨沟县|