После исправления значений в форме вы должны пометить ее коснулся для отображения ошибок
DEMO
patchValues(id, i) {
let x = (<FormArray>this.addForm.controls['rows']).at(i);
const selectedIngredient = this.ingredients.find(y => y.id == id);
x.patchValue({
unit_price: selectedIngredient.price
});
this.markFormGroupTouched(this.addForm)
}
Чтобы отметить полную форму как прикосновенную:
/**
* Marks all controls in a form group as touched
* @param formGroup - The group to caress
*/
markFormGroupTouched(formGroup: FormGroup) {
if (Reflect.getOwnPropertyDescriptor(formGroup, 'controls')) {
(<any>Object).values(formGroup.controls).forEach(control => {
if (control instanceof FormGroup) {
// FormGroup
this.markFormGroupTouched(control);
} else if (control instanceof FormArray) {
control.controls.forEach(c => {
if (c instanceof FormGroup)
this.markFormGroupTouched(c);
});
}
// FormControl
control.markAsTouched();
});
}
}