Как добавить значения в поля ввода в массиве форм - PullRequest
0 голосов
/ 21 июня 2019

В моей форме у меня есть три поля, которые можно динамически добавлять и удалять.Я сделал эту часть.Работает нормально.Но я хочу добавить значения к этим полям из database.but он показывает ошибку

  this.CreateEAuctionForm.get('upins').patchValue({
        mediaTyp: res[0].mtype,
        land:res[0].land
      });

Я пробовал приведенный выше код, но выдает ошибку

ERROR TypeError: value.forEach не является функцией в FormArray.push ../ node_modules/@angular/forms/fesm5/forms.js.FormArray.patchValue

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Публикация этого сообщения, так что это поможет кому-то в будущем
решение, данное @ AJT_82 , является правильным. Но у меня есть несколько значений, так что я нашел решение, в котором я просто передал индекс formarray.

    const formArr = <FormArray>this.CreateEAuctionForm.get('upins');

 // check that there is a formgroup inside the formarray at index 0
 if (formArr.at(id)) {
   formArr.at(id).patchValue({
     mediaTyp: res[0].mtype,
     land:res[0].land
   });
 } else {
   formArr.push(this.fb.group({
     mediaTyp: res[0].mtype,
     land:res[0].land
   }))
 }

Здесь id - индекс formarray, который создается динамически.
Спасибо AJT_82P за ваше решение. это мне очень помогло.

0 голосов
/ 21 июня 2019

Теперь вы пытаетесь установить объект (formgroup) в качестве значения для формала. Angular будет жаловаться на это. Если вы уверены, что в вашем бланке всегда есть группа форм, вы должны указать значение в этой группе. Который был бы по индексу 0, как "нормальные" массивы. Но для страховки давайте проверим, присутствует ли группа форм, если это так, исправим значения, иначе вставим новую группу в форму:

 const formArr = <FormArray>this.CreateEAuctionForm.get('upins');

 // check that there is a formgroup inside the formarray at index 0
 if (formArr.at(0)) {
   formArr.at(0).patchValue({
     mediaTyp: res[0].mtype,
     land:res[0].land
   });
 } else {
   formArr.push(this.fb.group({
     mediaTyp: res[0].mtype,
     land:res[0].land
   }))
 }

... где fb относится к FormBuilder.

ДЕМО: StackBlitz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...