Q:

Passar valor para array - angular

Eu tenho este formGroup:
 this.formGroup = this.formBuilder.group({
  id: [null],
  code: [null, Validators.required],
  description: [null],
  percent: [null, Validators.required],
  dueDate: [null, Validators.required],
  dataCreate: [null],
  couponPlan: this.formBuilder.array([]),
});

}
e preciso passar os valores para couponPlan, inicialmente, é apenas planId, que preciso passar.
No submit do formulário, eu estou tentando algo como:
this.formGroup.value['couponPlan'] =  this.formBuilder.group([this.plansids]);

Porém não funciona, ele não cria o array do couponPlan.
Já tentei de várias maneira this.formGroup.controls['couponPlan'] =  this.formBuilder.group([this.plansids]);
Ele fica errado os valores de planIds. Preciso preencher correto, para receber estes valores da lista na minha API. Olha como está ficando os planId.

A:

No formArray é necessário incluir uma lista de abstractControls, como no exemplo abaixo:
this.form = this.formBuilder.group({
    telefones: this.formBuilder.array([])
});

const telefones = ['(00) 0000 - 0000', '(11) 1111 - 1111'];
telefones.forEach(tel => (this.form.controls['telefones'] as FormArray).push(new FormControl(tel)));

Caso precise de um array de objetos pode se usar um formGroup ao invés de formControl.

