簡體   English   中英

嵌套 FormArray 上的 PatchValue

[英]PatchValue on a nested FormArray

我有一個包含日期值的嵌套表單數組的表單。 當用戶選擇一個日期時,會調用一個函數來格式化日期並更新表單的值。 但是,我很難理解如何訪問數組中的特定表單控件......這是相關代碼

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

  }

現在,我正在嘗試使用以下行更新值:

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

但是,顯然是錯誤的......有人可以幫忙嗎?

這是一個閃電戰https://stackblitz.com/edit/formarray-patchvalue

FormArray 方法有at方法來訪問特定的控件,使用它來設置值。

嘗試這個:

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

}

分叉示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM