• 自定义验证器的类型是 TypeScript
  • 类中包含具体的验证方法,验证方法必须为静态方法
  • 验证方法有一个参数 control,类型为 AbstractControl。其实就是 FormControl 类的实例对象的类型
  • 如果验证成功,返回 null
  • 如果验证失败,返回对象,对象中的属性即为验证标识,值为 true,标识该项验证失败
  • 验证方法的返回值为 ValidationErrors | null

    创建一个自定义验证器

    ```typescript // 新建 src/app/myValidators.ts 文件 import { AbstractControl, ValidationErrors } from “@angular/forms”

// 定义一个类 export class myValidators { // 字段值中不能包含空格,必须是静态方法 static static cannotContainSpace(control: AbstractControl): ValidationErrors | null { // 验证未通过 if (/\s/.test(control.value)) return { cannotContainSpace: true } // 验证通过 return null } }

  1. ```typescript
  2. // src/app/validators/validators.component.ts
  3. import { myValidators } from '../myValidators';
  4. contactForm: FormGroup = new FormGroup({
  5. name: new FormControl("", [
  6. Validators.required,
  7. // 在这个数组中的验证都是同步规则
  8. myValidators.cannotContainSpace
  9. ])
  10. })
  1. <div *ngIf="name.touched && name.invalid && name.errors">
  2. <div *ngIf="name.errors?.['cannotContainSpace']">姓名中不能包含空格</div>
  3. </div>