Reactive Forms - mark fields as touched
From Angular 8 you can simply use
this.form.markAllAsTouched();
To mark a control and it's descendant controls as touched.
AbstractControl doc
The following function recurses through controls in a form group and gently touches them. Because the control's field is an object, the code call Object.values()
on the form group's control field.
/**
* Marks all controls in a form group as touched
* @param formGroup - The form group to touch
*/
private markFormGroupTouched(formGroup: FormGroup) {
(<any>Object).values(formGroup.controls).forEach(control => {
control.markAsTouched();
if (control.controls) {
this.markFormGroupTouched(control);
}
});
}