首页 > 解决方案 > 为什么自定义验证不适用于反应形式?

问题描述

验证器:

import { AbstractControl, ValidatorFn } from '@angular/forms';

export function okatoValidator(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } | null => {
        const valid = /^\d+$/.test(control.value);
        console.log(valid);
        console.log(control.valid);
        return valid ? { okatoValidator: { value: control.value } } : null;
    };
}

使用:

this.form = this.formBuilder.group({ 
    okato: [null, [okatoValidator]]
});

模板是:

 <input matInput formControlName="okato" />

我输入control.valid为字符串值,而不是数字,它应该被验证错误

标签: angular

解决方案


您不需要在这里关闭,因为您没有将任何其他参数传递给您的验证器。

试试这个版本:

export function okatoValidator(control: AbstractControl): { [key: string]: any } | null {
  const valid = /^\d+$/.test(control.value);

  return !valid ? { okatoValidator: { value: control.value } } : null;
}

推荐阅读