如何在 fromGroup Angular 4 中设置多个交叉字段验证器
How to set multiple cross fields validators in a fromGroup Angular 4
我有一个响应式表单,其中包含非常相关的验证。我创建了一个 class,它具有跨域验证的所有功能,但如果我尝试使用 Validators.validator 设置它,它不会触发这些功能。如果我只是使用 {validator: MyValidatorClass.myCrossFieldValidator1}
这将适用于该功能,但我需要应用更多验证器,并且它不是开始创建子表单组的好解决方案。
我的代码看起来像这段代码,但名称不同
class MyValidatorClass {
static myCrossFieldValidator1 ...
static myCrossFieldValidator2 ...
static myCrossFieldValidator2 ...
}
和表格:
this.myForm = this.formBuilder.group({
field1: ['', [Validators.required, Validators.min(0), Validators.maxLength(2)]], // Done
field2: ['', [Validators.required, Validators.min(0)]],
field3: ['', [Validators.required]],
...},
{ validator: MyValidatorClass .myCrossFieldValidator1 } // This works but only for one function myCrossFieldValidator1 and is not what I need
// I have tried with
validators & Validators: [MyValidatorClass .myCrossFieldValidator1
,MyValidatorClass .myCrossFieldValidator12
,MyValidatorClass .myCrossFieldValidator3]
// 但这不起作用
);
这里的其他解决方案建议声明子组或将函数应用于字段,但我正在寻找的是将多个自定义交叉字段验证器应用于我的组。不确定哪里出了问题,或者是否是技术的限制。 Angular 在其示例中仅显示了一个验证器函数的简单情况 https://angular.io/guide/form-validation#cross-field-validation
您可以这样使用 Validators.compose
:
{ validator: Validators.compose([
MyValidatorClass.myCrossFieldValidator1,
MyValidatorClass.myCrossFieldValidator2
])}
validator: can be a single validator function, or an array of validator
functions
this.myForm = this.formBuilder.group({...},
{ validator: [ MyValidatorClass.myCrossFieldValidator1 ,
MyValidatorClass.myCrossFieldValidator12 ,
MyValidatorClass.myCrossFieldValidator3
]
});
我有一个响应式表单,其中包含非常相关的验证。我创建了一个 class,它具有跨域验证的所有功能,但如果我尝试使用 Validators.validator 设置它,它不会触发这些功能。如果我只是使用 {validator: MyValidatorClass.myCrossFieldValidator1}
这将适用于该功能,但我需要应用更多验证器,并且它不是开始创建子表单组的好解决方案。
我的代码看起来像这段代码,但名称不同
class MyValidatorClass {
static myCrossFieldValidator1 ...
static myCrossFieldValidator2 ...
static myCrossFieldValidator2 ...
}
和表格:
this.myForm = this.formBuilder.group({
field1: ['', [Validators.required, Validators.min(0), Validators.maxLength(2)]], // Done
field2: ['', [Validators.required, Validators.min(0)]],
field3: ['', [Validators.required]],
...},
{ validator: MyValidatorClass .myCrossFieldValidator1 } // This works but only for one function myCrossFieldValidator1 and is not what I need
// I have tried with
validators & Validators: [MyValidatorClass .myCrossFieldValidator1
,MyValidatorClass .myCrossFieldValidator12
,MyValidatorClass .myCrossFieldValidator3]
// 但这不起作用 );
这里的其他解决方案建议声明子组或将函数应用于字段,但我正在寻找的是将多个自定义交叉字段验证器应用于我的组。不确定哪里出了问题,或者是否是技术的限制。 Angular 在其示例中仅显示了一个验证器函数的简单情况 https://angular.io/guide/form-validation#cross-field-validation
您可以这样使用 Validators.compose
:
{ validator: Validators.compose([
MyValidatorClass.myCrossFieldValidator1,
MyValidatorClass.myCrossFieldValidator2
])}
validator: can be a single validator function, or an array of validator functions
this.myForm = this.formBuilder.group({...},
{ validator: [ MyValidatorClass.myCrossFieldValidator1 ,
MyValidatorClass.myCrossFieldValidator12 ,
MyValidatorClass.myCrossFieldValidator3
]
});