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

В одном из моих требований у меня есть таблица, похожая на массив, содержащая строки и столбцы. однажды в Init я делаю сервисный вызов и получаю столбцы, значения и сообщения об ошибках. на основе этого я создал массив форм для этих столбцов, и каждый столбец имеет сообщение об ошибке, если сообщение об ошибке существует, необходимо установить ошибки.

Я могу установить значение для этих столбцов, но не могу установить ошибки при вводе в массив формы, я не знаю, как я мог также нажать ошибку. застрял на этой линии.

Кн? Первоначально, как мы могли установить ошибки в элементах управления массивом формы на основе сообщений об ошибках ответа службы, я могу увидеть множество демонстраций только для первоначальной установки значения и установки валидаторов для этих элементов управления.

Но в моем случае мне нужно установить ошибку и установить значение на основе ответа сервера.

например) ответ

  [
    {fieldName:'productId',fieldValue:'123',errorMessage:'Product Id should be alphanumeric'},
    {fieldName:'productname',fieldValue:'123',errorMessage:'Product name should be 10 characters'}],

так далее

onInit(){

// делаем сервисный вызов и получаем значения после того, как получим значения для отправки в formArray. Но как также можно отправить ошибку.

Значение работает нормально

let result= service response;

     result.forEach((item:any[], index) => {

 let formData =this.formBuilder.group({
            item.fieldName:[item.fieldValue],
            item.fieldName:[item.fieldValue]
        
        });
        this.formArr.push(formData);
      
});

}

person Mohamed Sahir    schedule 14.09.2020    source источник


Ответы (2)


Рекомендуемый подход — использование updateValueAndValidity();

formData.updateValueAndValidity();

Но есть некоторые предостережения, которые необходимо понимать.

  1. они отлично работают на отдельном уровне formControl.

  2. Но на уровне formGroup и formArray он будет обновлять только достоверность своих предков. Они уже подробно описаны здесь работает правильно и Angular 6, this.formGroup.updateValueAndValidity( ) не работает должным образом

  3. Обходной путь для этого немного странный, но вы можете повторить и сделать это в этих строках.

     Object.keys(this.form.controls).forEach(key => {
          this.form.controls[key].updateValueAndValidity();
        });
    
person Akshay Nair    schedule 14.09.2020
comment
Как протолкнуть ошибку в массив формы при создании поля. значение можно вставить так, но я не знаю, как установить ошибки let formData =t his.formBuilder.group({ item.fieldName:[item.fieldValue], item.fieldName:[item.fieldValue] }); this.formArr.push(formData); после повторного нажатия на массив формы я беру массив формы и устанавливаю ошибки на основе этого поля. - person Mohamed Sahir; 14.09.2020

Вы можете просто вызвать formData.setErrors({errorMessage:item.errorMessage}) перед отправкой в ​​formArr.

person Aakif    schedule 14.09.2020