Angular 4 dynamiskt formulär patchvalue en array


Jag har ett dynamiskt formulär baserat på Angular-dokumentationen, jag har en funktion som låter användaren ladda deras sparade formulär. För närvarande kan jag patcha värdena för andra formulärfält som textfält och radioknapp men jag kan inte göra det på en array eftersom dess värde är en array. Jag har följande kod

if(value instanceof Array){
         value.forEach((subVal, index)=>{
           let a = subVal.value
           this.form.controls[key].patchValue({index,a})
         })
          //  
      }else{
      this.form.controls[key].patchValue(value);
      }

Svar #1

Jag skulle rekommendera att skapa en funktion och göra formuläret där. När du sparar posten eller skapar den, bör du kalla på funktionen.

Om du bara vill uppdatera ett värde kan du använda .patchValue()

Så här:

createForm(data: any){
  let newFormArray: FormGroup[] = [];
  for(let i = 0; i > data.length; i++){
    newFormArray.push(this.fb.group({
                    id: data[i].id,
                    name: data[i].name
     }));
  }
  this.form = this.fb.group({
       array: this.fb.array(newFormArray)
  })
}