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
为字符串值,而不是数字,它应该被验证错误
解决方案
您不需要在这里关闭,因为您没有将任何其他参数传递给您的验证器。
试试这个版本:
export function okatoValidator(control: AbstractControl): { [key: string]: any } | null {
const valid = /^\d+$/.test(control.value);
return !valid ? { okatoValidator: { value: control.value } } : null;
}
推荐阅读
- probability - m bins 问题中 n 个球的最合适分布
- mysql - 有没有办法使用表单中的组合框在 ms 访问中的字段中输入多个值?
- java - Java(FX):“可观察”数据库连接的最佳实践
- vim - 识别导致行为的 vim 插件
- android - 如何在没有 getExternalStorageDirectory() 的情况下从 Android 上的根目录读取文件?
- nuodb - Centos:启动失败 LSB:启动 NuoDB Admin
- r - 运行多行代码但在 R 中出现错误(来自 RStudio)?
- javascript - 在 google sheet 脚本中声明 const 的替代方法
- python - 气流initdb上的sql炼金术连接终止
- dart - 在这种情况下如何更改变量的值?