Исправление элементов не обновляет срок действия в угловых - PullRequest
0 голосов
/ 06 сентября 2018

У меня проблема, потому что после отправки формы, даже если есть значение, «поле обязательно для заполнения» не исчезает. Это должно исчезнуть. Что-то не так с моей действительностью? Пожалуйста, смотрите эту ссылку Смотрите эту ссылку

TS

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
});

}

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

После исправления значений в форме вы должны пометить ее коснулся для отображения ошибок

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();
            });
        }
    }
0 голосов
/ 06 сентября 2018

В этих случаях необходимо запустить проверку достоверности с помощью (например):

x.patchValue({
  unit_price: selectedIngredient.price
});
x.get('unit_price').markAsTouched();

При исправлении значения валидаторы не выполняются.

Работает скрипка

...