我有一个用于字段的Validators.pattern,这是我对表单进行的唯一验证。
正常使用是可行的。它可以正确验证该字段,但是当您尝试复制和粘贴时会出现问题。
如果您在该字段上重复复制并粘贴到该字段上,就好像该字段的有效性已被切换(如果表单无效,则提交按钮将被禁用)
当我从其他来源(例如搜索或自动建议)中填充数据时,也会发生此问题。
buildForm(obj) {
this.form = this.fb.group({
field: [obj['field'] || '', Validators.pattern(/MY_REG_EX_HERE/g)],
id: [obj['id'] || ''],
});
}
答案 0 :(得分:0)
我不太确定问题的主要原因,但是作为一种解决方法,我使用相同的REGEX创建了自定义验证器。我将其张贴在这里,可能会帮助某人。
import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
export function customValidator(control: AbstractControl) {
if (control.value !== '') {
const isValid = (/MY_REG_EX_HERE/g).test(control.value)
return isValid ? null : { customValidator: true };
} else {
return null;
}
}
答案 1 :(得分:0)
我遇到了类似的问题。我仔细研究了一下,找到了原因。像我一样,您正在使用 /g
修饰符。如果将正则表达式分配给变量,则会产生副作用。此修饰符指示在字符串中继续搜索。要了解“意外”行为,请查看屏幕截图。
你可以找到more information here