Angular 从角度为9的FormArray中获取指定值

Angular 从角度为9的FormArray中获取指定值,angular,formarray,Angular,Formarray,我有一个FormGroup,它有一个FormArray元素: this.addForm = new FormGroup({ id: new FormControl(''), user_id: new FormControl(3), client_id: new FormControl('', Validators.required), type: new FormControl('', Validators.required), description: new FormCo

我有一个FormGroup,它有一个FormArray元素:

this.addForm = new FormGroup({
  id: new FormControl(''),
  user_id: new FormControl(3),
  client_id: new FormControl('', Validators.required),
  type: new FormControl('', Validators.required),
  description: new FormControl(''),
  payment_ref: new FormControl(''),
  registration_date: new FormControl(''),
  status: new FormControl('', Validators.required),
  sale_date: new FormControl(''),
  payment_date: new FormControl(''),
  total_price: new FormControl(''),
  services: new FormArray([
    new FormGroup({
      service_id: new FormControl('', Validators.required),
      description: new FormControl('', Validators.required),
      unit: new FormControl('', Validators.required),
      price: new FormControl(''),
      quantity: new FormControl(''),
      total_price: new FormControl(''),
    }),
  ])
});
在GUI中,我可以通过单击按钮添加新的FormArray。 GUI如下所示:

当我在“选择服务”部分中选择服务时,说明和价格应自动填入数据。 此部件的代码如下所示:

getSelectedService(event,index){
console.log(event.value);
 this.http.get("http://localhost/finance/server/public/api/v1/service" + '/' + event.value)
 .toPromise().then(data => 
  {
    //console.log(data);
    this.getSelectedServiceData = data;
    // console.log(this.getSelectedServiceData.service);
    //console.log(this.addForm.get('services'));
    this.addForm.get('services').patchValue([this.getSelectedServiceData.service]);
    console.log(this.addForm.get('services').value);

  });
}

问题是,当我添加另一行并尝试从选择框中选择服务时,说明和价格会发生变化,但第一行的说明和价格不会发生变化,而不是指定行的说明和价格。
有什么帮助吗?

如果要访问formarray中的数据,需要使用以下语句:

(this.addForm.services as FormArray).controls[0].value

现在您需要将此值修补到新添加的formarray中

您可以为您的问题创建stackblitz吗?@PrincesInnija我从Laravel获得数据,我认为我无法进行堆栈blitz,而且项目很复杂。如果您想访问formarray中的数据,您需要使用(this.addForm.services as formarray)。控件[0].value在此之后,您需要将此值修补到新添加的formarray