美文网首页
6.表单校验下

6.表单校验下

作者: Monee121 | 来源:发表于2018-03-05 12:52 被阅读0次

新建一个ts,把校验方法放进去,然后导出。移出的方法不是ts 的类的方法,而是全局的ts的函数,需要用function来声明,用export来暴露出去。然后在模板组件里直接引用它。

Validators.ts(密码验证,手机号验证)

/*方法*/
import {FormControl, FormGroup} from '@angular/forms';

export  function mobileValidator(control: FormControl): any {
  const mobieReg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
  const valid = mobieReg.test(control.value);
  console.log('mobile的校验结果是:' + valid);
  return valid ? null : {mobile : true}; /*返回空代表通过,valid为false的时候,返回对象,key,随便给一个值*/
}
export  function equalValidator(group: FormGroup): any {
  const password: FormControl = group.get('password') as FormControl;
  const confirmpass: FormControl = group.get('confirmpass') as FormControl;
  const valid: boolean = (confirmpass.value === password.value);
  console.log('密码校验结果' + valid);
  return valid ? null : {equal: {descxx: '密码和确认密码不匹配'}};
}

reactive-regist.ts

export class ReactiveRegistComponent implements OnInit {
  formModel: FormGroup;

  constructor(fb: FormBuilder) {
    this.formModel = fb.group({
     /* username: new FormControl(),*/
     username: ['', [Validators.required,  Validators.minLength(6)]], /*必填,最长6*/
      mobile: ['', mobileValidator],
      passwordsGroup: fb.group({
         password: ['' , Validators.minLength(6)],
        confirmpass: ['']
        }, {validator: equalValidator}), /*group的校验这样写*/
    });
  }
  onSubmit() {
  /*  const isValid: boolean = this.formModel.get('username').valid; /!*校验的结果布尔值*!/
    console.log('username的校验结果是:' + isValid);
    const errors: any = this.formModel.get('username').errors; /!*校验结果错误信息*!/
    console.log('username的错误信息是' + JSON.stringify(errors));*/
  if (this.formModel.valid) {/*所有字段合法为true,打印信息*/
    console.log(this.formModel.value);
  }
 }
  ngOnInit() {
  }

}

模板

<form [formGroup]="formModel" (submit)="onSubmit()">
  <div>用户名:<input type="text" name="username" formControlName="username"/></div>
  <div [hidden]="!formModel.hasError('required','username')">
    <!--hasError两个参数,一是校验的是否必填,校验器失败返回的对象的key的值,有值就是失败的
    。二是检查的字段名字,hidden为true隐藏,所以取反。-->
    用户名是必填项
  </div>
  <div>电话:<input type="text" name="mobile" formControlName="mobile"/></div>
  <div [hidden]="!formModel.hasError('mobile','mobile')">请输入正确的手机号</div>
  <div formGroupName="passwordsGroup">
     <div>密码:<input type="text" name="password" formControlName="password"/></div>
    <div [hidden]="!formModel.hasError('minlength',['passwordsGroup','password'])">密码最小长度是6</div>
     <div>确认密码:<input type="text" name="confirmpass" formControlName="confirmpass"/></div>
    <div [hidden]="!formModel.hasError('equal','passwordsGroup')">{{formModel.getError('equal','passwordsGroup')?.descxx}}</div>
  </div>
  <div><input type="submit" value="提交"/></div>
</form>

异步校验器:可观测的流

Validators.ts

export  function mobileAsyncValidator(control: FormControl): any {
  const mobieReg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
  const valid = mobieReg.test(control.value);
  console.log('mobile的校验结果是:' + valid);
  return Observable.of(valid ? null : {mobile : true}).delay(5000); /*在返回的时候,返回的是一个流,延迟五秒,模拟服务器,五秒以后返回*/
} /*异步校验器可作为fromcontrol的第三个构造函数*/

表单.ts

  mobile: ['', mobileValidator, mobileAsyncValidator], /*异步手机号的校验*/

模板

<div>{{formModel.status}}</div><!--表单的状态-->

相关文章

  • 6.表单校验下

    新建一个ts,把校验方法放进去,然后导出。移出的方法不是ts 的类的方法,而是全局的ts的函数,需要用functi...

  • Element-UI表单验证

    校验规则 表单通过rules属性绑定校验规则对象,表单项通过prop属性绑定具体校验规则 注意校验的字段必须和表单...

  • elementUI踩坑

    ElementUI 表单校验没反应的问题 因为同一页面下写了多个表单,我需要对所有表单都进行校验无误后再向后台发起...

  • bootstrap直接对form表进行校验

    form表单可以前端进行校验,当然也可以直接采用bootstrap对form表单进行校验如form表单中有 等相关...

  • 13、element-ui中表单验证函数的封装

    // 表单验证 validatForm () { // 校验表单的方法 let validat t...

  • day48-表单校验及日志记录

    1form表单校验 1.1新建form表单 在当前应用下新建一个forms.py文件在创建表单类的时候,form表...

  • Element UI 校验form表单 升级版

    前言:业务中台系统中,有表单校验,一般我们都会配置rules属性,进行校验,如果存在多个表单校验,对用户体验很不友...

  • Spring Boot+Vue 添加修改删除数据(四)

    Element UI 表单数据校验 定义 rules 对象,在 rules 对象中设置表单各个选项的校验规则 re...

  • elementUI中动态表单的校验

    首先需要再data中定义表单变量 循环的表单数据 表单的校验规则如下 通过给每一个循环的表单数据添加对应的校验规则...

  • 表单校验——校验响应式表单

    表单校验 Angular的校验器 angular提供了一组预定义的校验器,这些校验器都是定义在angular的fo...

网友评论

      本文标题:6.表单校验下

      本文链接:https://www.haomeiwen.com/subject/kimqfftx.html