Mam ten formularz, który ma zagnieżdżoną tablicę formularzy, która przechowuje wartości dat. Gdy użytkownik wybiera datę, wywoływana jest funkcja, która formatuje datę i powinna aktualizować wartość formularza. Ale mam trudności ze zrozumieniem, jak uzyskać dostęp do określonej formanttrol w tablicy ... To jest odpowiedni kod

 constructor(private formBuilder: FormBuilder, private datepipe: DatePipe) {
    this.form = this.formBuilder.group({

      loading: this.formBuilder.array([])
    });

 }

  get loadingForm(){

    return this.form.get('loading') as FormArray
  }

  addLoadingTimes(){

    const loading = this.formBuilder.group({

      StartLoadDate: [],
      EndLoadDate: []

    })

    this.loadingForm.push(loading);
  }


  //format date from datepicker 

  changeDateTimeEvent(event:MatDatepickerInputEvent<Date>, index, controlName) {


    const d = new Date(event.value);
    const date = this.datepipe.transform(d, 'yyyyMMddHHMMss');


    this.form.controls['loading'][controlName].at(index).patchValue(date);

  }

W tej chwili próbuję zaktualizować wartość tym wierszem:

 this.form.controls['loading'][controlName].at(index).patchValue(date);

Ale najwyraźniej się myli ... Czy ktoś mógłby pomóc?

Oto blitz https://stackblitz.com/edit/formarray-Patchvalue

0
gothaf 1 styczeń 2020, 18:13

1 odpowiedź

Najlepsza odpowiedź

FormArray ma metodę at umożliwiającą dostęp do określonej kontroli. to setValue.

Spróbuj tego:

changeDateTimeEvent(event:MatDatepickerInputEvent<Date>, index, controlName) {
     const d = new Date(event.value);
     const day = this.datepipe.transform(d, 'yyyyMMddHHMMss');
     let formName : string;
     this.loadingForm.at(index).get(controlName).setValue(day);

}

Rozwidlony przykład

1
Chellappan வ 1 styczeń 2020, 16:12