在Angular中,当FormArray中的一个或多个控件无效时,它不会将表单标记为无效。为了解决这个问题,可以使用以下方法:
// 自定义验证器函数
function validateFormArray(formArray: FormArray): ValidationErrors | null {
const invalidControls = formArray.controls.filter(control => !control.valid);
return invalidControls.length ? { invalidFormArray: true } : null;
}
// 创建FormArray
const formArray = new FormArray([new FormControl('', Validators.required), new FormControl('')], validateFormArray);
// 手动检查FormArray中的控件状态
function checkFormArrayValidity(formArray: FormArray): boolean {
for (const control of formArray.controls) {
if (!control.valid) {
return false;
}
}
return true;
}
// 使用手动检查FormArray的控件状态
const isValid = checkFormArrayValidity(formArray);
这些方法可以帮助您在FormArray中的一个或多个控件无效时将表单标记为无效。您可以根据自己的需求选择其中的一种方法。