Получение указанного значения из FormArray в Angular 9 - PullRequest
0 голосов
/ 06 мая 2020

У меня есть 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 выглядит так: enter image description here

Когда я выбираю Serv ie в разделе «Выбор услуги», описание и цена должны автоматически заполняться данными. Код для этой части выглядит следующим образом:

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);

  });

}

Проблема в том, что когда я добавляю еще одну строку и пытаюсь выбрать в поле выбора службу, описание и цена изменяется, но первой строки не указанной строки. Любая помощь?

1 Ответ

1 голос
/ 07 мая 2020

если вы хотите получить доступ к данным внутри formarray, вам нужно использовать следующую инструкцию:

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

Теперь вам нужно исправить это значение во вновь добавленном formarray

...