在模板驱动表单中,应该在FormControl内部添加CustomValidator函数,并返回一个对象来指示验证结果。但是,由于严格模式的一些限制,具有参数null的函数引用将被视为未定义,因此验证器无法正常工作。
要解决这个问题,可以使用lambda表达式来定义CustomValidator函数,并在validator属性中引用它。这可以确保函数不会被识别为未定义的。
以下是示例代码:
在组件类中定义CustomValidator:
export class MyComponent {
myValidator = (): ValidatorFn => {
return (control: AbstractControl): ValidationErrors | null => {
const emailRegex = /\S+@\S+\.\S+/;
const valid = emailRegex.test(control.value);
return valid ? null : { invalidEmail: true };
};
}
}
将此ValidatorFn添加到email表单字段的验证器中:
注意:如果你正在使用响应式表单,则在FormControl上添加CustomValidator函数并不会受到严格模式的影响。但是,如果您在模板驱动的表单中使用CustomValidator,则应该采用上述解决方案。