寻找一种在角度中使用反应形式的方法,以验证2个必填字段和至少10个其他字段中的一个。因此,我们需要字段1和2,并且必须至少选择3到12中的一个。实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
您可以将3-12放入表单组并针对表单组编写自定义验证程序。
以下是我编写的用于比较的自定义验证器的示例" email"和"确认电子邮件"表单组中的元素:
function emailMatcher(c: AbstractControl): {[key: string]: boolean} | null {
let emailControl = c.get('email');
let confirmControl = c.get('confirmEmail');
if (emailControl.pristine || confirmControl.pristine) {
return null;
}
if (emailControl.value === confirmControl.value) {
return null;
}
return { 'match': true };
}
然后将表格定义如下:
this.customerForm = this.fb.group({
firstName: ['', [Validators.required, Validators.minLength(3)]],
lastName: ['', [Validators.required, Validators.maxLength(50)]],
emailGroup: this.fb.group({
email: ['', [Validators.required, Validators.pattern('[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+')]],
confirmEmail: ['', Validators.required],
}, {validator: emailMatcher}),
phone: ''
});
您可以执行类似操作,将元素3 - 12放入表单组,然后编写分配给该组的自定义验证程序。