嵌套Form数组上的PatchValue [英] PatchValue on a nested FormArray

查看:0
本文介绍了嵌套Form数组上的PatchValue的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个表单,它有一个包含日期值的嵌套表单数组。当用户选择日期时,将调用一个函数来设置日期的格式,并应更新表单的值。 但是,我很难理解如何访问数组中的特定Form控件…… 这是相关代码

 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

推荐答案

Form数组方法具有at方法来访问使用setValue的特定控件。

尝试:

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

}

Forked Example

这篇关于嵌套Form数组上的PatchValue的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆