我需要将自定义验证器分配给 FormGroup。我可以在创建 FormGroup 时这样做:
let myForm : FormGroup;
myForm = this.formBuilder.group({
myControl1: defaultValue,
myControl2: defaultValue
}, { validator: this.comparisonValidator })
comparisonValidator(g: FormGroup) {
if (g.get('myControl1').value > g.get('myControl2'.value)) {
g.controls['myControl1'].setErrors({ 'value2GreaterThanValue1': true });
return;
}
}
我有一种情况,我需要在实例化 FormGroup 之后 添加自定义验证器,所以我试图在实例化 myForm
之后执行此操作,而不是在实例化表单时添加验证器:
let myForm : FormGroup;
myForm = this.formBuilder.group({
myControl1: defaultValue,
myControl2: defaultValue
})
this.myForm.validator = this.comparisonValidator;
这给了我一个编译器错误:
Type '(g: FormGroup) => void' is not assignable to type 'ValidatorFn'.
Type 'void' is not assignable to type 'ValidationErrors'.
我如何为我的 FormGroup
分配一个验证器,以便 formGroup
作为参数传递给我的 comparisonValidator
函数?
更新- 我在我的 --- 中添加了一行显示我正在执行 setErrors
comparisonValidator
,以便更清楚地说明我是如何尝试设置验证错误的。
原文由 Chris Halcrow 发布,翻译遵循 CC BY-SA 4.0 许可协议
我创建了一个 stackblitz 测试。
在 component.ts 文件中
在 component.html 文件中