广告
返回顶部
首页 > 资讯 > 前端开发 > html >Angular2如何自定义validators
  • 235
分享到

Angular2如何自定义validators

2024-04-02 19:04:59 235人浏览 安东尼
摘要

这篇文章主要介绍了angular2如何自定义validators,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。angular 当需要fORM

这篇文章主要介绍了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())

模板:

<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”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网html频道,更多相关知识等着你来学习!

--结束END--

本文标题: Angular2如何自定义validators

本文链接: https://www.lsjlt.com/news/71745.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Angular2如何自定义validators
    这篇文章主要介绍了Angular2如何自定义validators,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。angular 当需要form...
    99+
    2022-10-19
  • Angular2怎么自定义validators
    这篇文章主要介绍“Angular2怎么自定义validators”,在日常操作中,相信很多人在Angular2怎么自定义validators问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-19
  • Angular2如何自定义分页组件
    这篇文章主要介绍了Angular2如何自定义分页组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在项目中,前端传给后台的参数有:pageS...
    99+
    2022-10-19
  • Angular2如何实现自定义双向绑定属性
    这篇文章将为大家详细讲解有关Angular2如何实现自定义双向绑定属性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。整理文档,搜刮出一个Angular 2实现自定义 双向...
    99+
    2022-10-19
  • Angular2管道Pipe及自定义管道格式数据的使用案例
    小编给大家分享一下Angular2管道Pipe及自定义管道格式数据的使用案例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体如下:管道(Pipe)可以根据开发者的意愿将数据格式化,还可以...
    99+
    2022-10-19
  • Android自定义组件:2、如何实现和使用自定义组件、自定义属性
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、如何实现自定义组件 步骤1:写 attrs.xml 资源文件 1、...
    99+
    2022-06-06
    属性 自定义属性 Android
  • SpringBoot如何自定义bean绑定
    本篇内容介绍了“SpringBoot如何自定义bean绑定”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自定义bean绑定在配置文件中写入s...
    99+
    2023-07-04
  • SpringBoot如何自定义starter
    目录1. 什么是starter2. 自动配置原理2.1 自动配置生效3. 自定义starter3.1 命名规范4.总结4.1为什么要自定义starter4.2 自定义starter的...
    99+
    2022-11-12
  • React如何自定义hook
    本篇内容主要讲解“React如何自定义hook”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React如何自定义hook”吧!什么是hookHook是 React 16.8 的新增特性。它通常与...
    99+
    2023-07-02
  • Swift如何自定义UIView
    小编给大家分享一下Swift如何自定义UIView,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Swift自定义View和OC自定义View的原理都是一样的,重写...
    99+
    2023-06-25
  • html5如何自定义audio
    这篇文章给大家分享的是有关html5如何自定义audio的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html<!-- cur表示当前时间 max表示总...
    99+
    2022-10-19
  • MybatisPlusEntityWrapper如何自定义SQL
    目录EntityWrapper自定义SQL第一种第二种第三种MybatisPlus自定义sql查询EntityWrapper自定义SQL 在mybatis plus中根据条件构造器,...
    99+
    2022-11-13
  • Android如何自定义Dialog
    本篇内容主要讲解“Android如何自定义Dialog”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何自定义Dialog”吧!接下来看代码:public class&n...
    99+
    2023-07-02
  • Android Compose自定义TextField如何实现自定义的输入框
    这篇文章主要介绍Android Compose自定义TextField如何实现自定义的输入框,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!简单自定义BasicTextField示例代码 var&n...
    99+
    2023-06-29
  • Python如何自定义元类
    这篇文章主要介绍了Python如何自定义元类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、说明一个类没有声明自己的元类,默认他的元类就是type,除了使用元类type,用...
    99+
    2023-06-14
  • css如何自定义字体
    这篇文章主要介绍css如何自定义字体,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!css的三种引入方式1.行内样式,最直接最简单的一种,直接对HTML标签使用style=""。2.内嵌样式,就是将...
    99+
    2023-06-14
  • Spring如何自定义注解
    这篇文章将为大家详细讲解有关Spring如何自定义注解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。字段注解字段注解一般是用于校验字段是否满足要求,hibernate-validate依赖就提供了很多校验...
    99+
    2023-06-15
  • ADO.NET如何自定义对象
    这篇文章主要讲解了“ADO.NET如何自定义对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET如何自定义对象”吧!ADO.NET实体框架提供了相应的工具,以便根据 实体数据模型...
    99+
    2023-06-17
  • thinkphp如何自定义首页
    本文小编为大家详细介绍“thinkphp如何自定义首页”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp如何自定义首页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、默认首页首先让我们来看一下 T...
    99+
    2023-07-05
  • Gitee如何自定义域名
    Gitee是国内最大的Git开源代码托管平台之一,它允许开发者托管代码、参与开源项目、分享自己的代码、协作开发等,是非常方便且实用的开源平台。在使用Gitee过程中,很多人会想要自定义域名,以便更好地展示个人品牌、项目等,那么,Gitee如...
    99+
    2023-10-22
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作