У меня та же проблема с очень сложной формой и несколькими дочерними компонентами. Лучшее решение, которое я придумал, состояло в том, чтобы проверять все поля формы сразу после нажатия кнопки отправки с этой функцией
validateAllFormFields(formGroup: FormGroup | FormArray): boolean {
const keysArray = formGroup instanceof FormGroup ? Object.values(formGroup.controls) : formGroup.controls;
keysArray.forEach(control => {
if (control instanceof FormControl) {
control.markAsTouched({ onlySelf: false });
control.updateValueAndValidity();
} else if (control instanceof FormGroup || control instanceof FormArray) {
this.validateAllFormFields(control);
}
});
return formGroup.invalid;
}
send() {
const formIsValid = this.validateAllFormFields(this.testForm);
}
Это исправленная версия вашего кода (я только что добавил вышеуказанный код в app.component.ts
)
https://stackblitz.com/edit/angular-zbzubh