Angular 表单校验

1.html

<form [formGroup]="formModel" (submit)="submit()">
   <div>
     用户名:<input  type="text" formControlName="username">
     电话:<input  type="text" formControlName="mobile">

     <div formGroupName="passwordsGroup">
       密码:<input  type="password" formControlName="password">
       确认密码:<input  type="password" formControlName="pconfirm">
     </div>

   </div>
  <div><button type="submit">保存</button></div>
</form>

  

2. 控制器中创建FormModel

  constructor(private http: Http, fb: FormBuilder) {
    this.formModel = fb.group({
      username:  [‘‘, [Validators.required, Validators.minLength(10)]],
      mobile:  [‘‘, this.mobileValidator],
      passwordsGroup: fb.group({
          password:  [‘‘],
          pconfirm: [‘‘]
      }, { validator: this.equalValidator} ),
    });
  }

  

3. 创建自定义校验器

  mobileValidator(control: FormControl): any {
    const myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
    const valid = myreg.test(control.value);
    console.log(‘mobile result: ‘ + valid);
    return valid ? null : {mobile: true};

  }

  equalValidator(group: FormGroup): any {
    const password: FormControl = group.get(‘password‘) as FormControl;
    const pconfirm: FormControl = group.get(‘pconfirm‘) as FormControl;
    const valid: boolean = password.value === pconfirm.value;
    console.log(‘password equal: ‘ + valid);
    return valid ? null : {equal: true};
  }

  mobileValidator用来校验电话号码是否有效

  equalValidator 用来校验两次输入的密码是否一致

4. submit方法

  submit() {
    const isValid: boolean = this.formModel.get(‘username‘).valid;
    console.log(‘username: ‘ + isValid);
    const errors: any = this.formModel.get(‘username‘).errors;
    console.log(‘username errors‘ + JSON.stringify(errors));
    if ( this.formModel.valid) {
      console.log(this.formModel.value);
    }

  }

  

5.完整的代码

时间: 2024-08-29 18:59:32

Angular 表单校验的相关文章

表单校验的值$valid、$invalid、$pristine和$dirty

angular内置了一套表单校验,其中包含几个状态 ① valid.invalid.pristine和dirty  valid标记表单元素有效:  invalid标记表单元素无效:  pristine表示表单元素是纯净的,用户未操作过:  dirty表示表单元素是已被用户操作过: ② 更改css属性  .ng-pristine {}  .ng-dirty {}  .ng-valid {}  .ng-invalid {} $scope.infoFrom.$setPristine();   //设置

angular表单的使用实例

原文 https://www.jianshu.com/p/da1fd5396798 大纲 1.模板驱动表单的创建 2.响应式表单的创建 3.模板驱动型表单的自定义指令 4.响应式表单的自定义指令 5.父组件向子组件传递表单控制 6.代码素材 模板驱动表单的创建 //1.在根模块注入依赖模块 import { FormsModule } from '@angular/forms'; //2.在模板中创建表单控件 <form> <div class="form-group"

【JAVAWEB学习笔记】28_jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件

Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用   一.json数据结构 1.什么是json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯.这些特性使JSON成 为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络

利用jquery.validate以及bootstrap的tooltip开发气泡式的表单校验组件

表单校验是页面开发中非常常见的一类需求,相信每个前端开发人员都有这方面的经验.网上有很多成熟的表单校验框架,虽然按照它们默认的设计,用起来没有多大的问题,但是在实际工作中,表单校验有可能有比较复杂的个性化的需求,使得我们用这些插件的默认机制并不能完成这些功能,所以要根据自己的需要去改造它们(毕竟自己还不到那个写一个完美的校验框架的层次).我用过formValidation这个校验框架,虽然它跟bootstrap配合地很好,但是校验风格太死板,不太满足个性化的场景:后来我找到了jquery.val

简约的form表单校验插件

前言 网上有好多form表单校验插件,包括jquery的表单检验插件,这些中好多插件功能很齐全强大,提示方式很酷,很美观好看.本想拿来用,但是发现几个问题: 1.使用不方便.校验规则繁多,调用校验函数难记忆. 2.提示方式固定.一般插件给出固定的几种提示方式,但是实际中,不同系统都有自己的页面风格样式,有自己的提示方式,插件自带的一般用不上. 因此,我最终没有采用这些插件,以免用后出现难以修改或实现的情况. 如果一种校验插件能避免以上两个问题最好了,方便使用,提示方式自定义 ,所以自己做了一个简

开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm

10.4Validform对象[方法支持链式调用] 如示例 var demo=$(".formsub").Validform(),那么demo对象会有以下属性和方法可以调用: tipmsg[object] 如:demo.tipmsg.s="error! no messageinputed."; 通过该对象可以修改除 tit 以外的其他提示文字,这样可以实现同一个页面的不同表单使用不同的提示文字. 具体可修改的提示文字 $.Tipmsg={//默认提示文字; tit:

JQuery中内容操作函数、validation表单校验

JQuery:内容体拼接(可以直接拼接元素节点和内容节点) JQuery实现: 方案1:A.append(B); == B.appendTo(A);A的后面拼接B 方案2: A.prepend(B); == B.prependTo(A);A文本的最前面插入B text()与html()比较: 1.相同点: 都可以设置或获取内容 2.不同点: 获取时,html()获取的是所有内容体:标签+文本 text()获取的只是文本 设置时,如果设置的内容有html()标签 html()设置的内容可以被浏览器

示例-表单校验-多内容

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

创建通用的表单校验逻辑库

表单校验一直是web开发中最基础,也是最不好做的一个环节.说是基础,相信多少从事web开发的人第一件事就是学习如果基于js.jQuery实现表单验证工作.在10年前,甚至是5年前,JavaScript还是被多数工程师轻视的一门语言,那时候很多人认为JavaScript充其量也就能完成一部分表单校验的工作.由此可知表单校验是多么基础的一件事情:说它不好做,是因为表单校验往往工作量极大,可以说是一个没太大技术含量但是很耗费体力的活,而且在一些对交互友好性要求较高的项目中,表单校验就更加费事了. 于是