angular4响应式表单与校验实现demo(angular表单提交)这都可以

随心笔谈12个月前发布 admin
93 0

import { Component,OnInit } from ‘@angular/core’;
import { FormGroup,FormControl,FormBuilder,AbstractControl,Validators } from ‘@angular/forms’;
import { validators } from ‘https://www.jb51.net/article/validator/validators’;
@Component({
selector: ‘app-root’,
templateUrl: ‘https://www.jb51.net/article/app.component.html’,
styleUrls: [‘https://www.jb51.net/article/app.component.css’]
})
export class AppComponent implements OnInit{
//校验器就是一个普通的方法,名字随意定,接收一个参数,参数的类型必须是AbstractControl的类型,必须有返回值,返回值的//可以是任意结果的一个对象,对象要求key必须是string类型的,值可以是任意类型的
// xxxx(control:AbstractControl):{[key:string]:any} {
// return null;
// }
//校验器可以单独的提取出去,写在validators.ts文件中
public val:validators;//定义一个validators类型的变量 val
formModel: FormGroup;
// constructor(){
// this.formModel=new FormGroup({
// username: new FormControl(),
// moblie: new FormControl(),
// passwordsGroup: new FormGroup({
// password: new FormControl(),
// pwconfrim: new FormControl()
// })
// });
// }
//同上的功能
//FormBuilder的group方法可以再接收一个额外的方法来做校验,用“,”分开
//[”,,]第一个元素是一个初始值,第二个元素是一个校验方法,第三个元素是异步校验方法
constructor(fb:FormBuilder){
this.val=new validators();
this.formModel=fb.group({
username: [”,[Validators.required,Validators.minLength(6)]],//[”]实例化了一个FormControl,Validators内置表单校验都存储在这里
mobile: [”,this.val.mobileValidator,this.val.mobileAsyncValidator],
passwordsGroup: fb.group({
password: [”,Validators.minLength(6)],
pwconfrim: [”]
},{validator :this.val.euqalValidator})
});
}
onSubmit() {
// let isValid: boolean=this.formModel.get(“username”).valid;
//符合所有校验规则后,isValid就是true;
// console.log(“username的校验结果是”+isValid);
// let errors:any=this.formModel.get(“username”).errors;
// console.log(“username的错误信息是”+JSON.stringify(errors))
if(this.formModel.valid){ //所有表单都合法才打印表单的值
console.log(this.formModel.value);
}
}
ngOnInit() {
}
}

© 版权声明

相关文章