为什么自定义验证不适用于反应形式?

时间:2020-10-08 09:23:19

标签: angular

验证者:

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作为字符串值,而不是数字,应该验证错误

1 个答案:

答案 0 :(得分:0)

您无需在此处关闭,因为您无需将任何其他参数传递给验证器。

尝试此版本:

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

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