千家信息网

Angular2怎么自定义validators

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"Angular2怎么自定义validators",在日常操作中,相信很多人在Angular2怎么自定义validators问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2026年11月01日Angular2怎么自定义validators

这篇文章主要介绍"Angular2怎么自定义validators",在日常操作中,相信很多人在Angular2怎么自定义validators问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Angular2怎么自定义validators"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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())

模板:

{{email.errors.errMsg}}

当邮箱格式不正确时 这里就会显示 '请输入正确的邮箱地址'

至此一个简单的校验器就完成了。

如果想比较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"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

邮箱 地址 对象 校验器 学习 方法 源码 输入 信息 接口 时候 更多 帮助 验证 实用 相同 成功 接下来 业务 例子 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 云信互联网科技有限公司 互联网的科技 碳银互联网科技 九亚互联网科技 深圳齐家互联网科技 丰台科技园 互联网 亿人帮互联网科技 央行互联网金融科技公司 北京华百购互联网科技有限公司 互联网科技创新服务 武汉健翔互联网络科技有限公司 崇明区互联网教育科技诚信经营 天津腾达互联网科技有限公司 区块链结合互联网科技 众安科技工业互联网合作 科技互联网的核心竞争力 山东星卡互联网科技有限公司官网 广州百诚互联网科技有限公司官网 中国主要互联网科技公司 小米移动互联网科技园 疫情对互联网科技公司影响 港股互联网科技股 齐家互联网科技 衡水科技产业互联网平台 上海电发互联网科技有限公司 深圳互联网科技的发展 云鲸互联网络科技有限公司 湖北辰鑫科技互联网 科技发展第三阶段互联网时代
0