Как поместить объект в массив элементов управления формой

#angular

#угловатый

Вопрос:

У меня есть FormGroup , один из FormControls является массивом.

 this.newPurchase = fb.group({
  supplierName: ["", Validators.required],
  supplierNumber: ["", Validators.required],
  supplierEmail: ['', Validators.required],
  stockitems: [[], Validators.required],
});
 

Как вы можете видеть, stockitems объявлен как массив, и я хотел бы поместить в него объект.

Это то, что я пробовал:

 exampleObject = {
name:'foo',
lastName:'fooAgain'
}

this.newPurchase.controls.stockitems.push(this.exampleObject)
 

Объект не был помещен в массив,
какие-либо предложения?

Ответ №1:

 this.newPurchase = fb.group({
  supplierName: ["", Validators.required],
  supplierNumber: ["", Validators.required],
  supplierEmail: ['', Validators.required],
  stockitems: this.fb.array([], Validators.required),
});
 

в вашем компоненте поместите эту функцию:

 get stockItemFormControls(): FormArray {
    return <FormArray>this.newPurchase.get('stockitems');
  }
 

Затем там, где это было необходимо:

 this.stockItemFormControls.push(this.fb.group({name: 'foo', lastName:'fooAgain'}));
 

или

 this.stockItemFormControls.push(this.fb.group(this.exampleObject));