Angular Iam无法将值设置为formArray

Angular Iam无法将值设置为formArray,angular,typescript,angular-reactive-forms,Angular,Typescript,Angular Reactive Forms,我想设置值以形成数组,但无法设置新值 我尝试使用patch value设置值,但失败 //in component.ts this.packageForm = this.formBuilder.group({ title: ['', Validators.required], productImage: ['', Validators.required], price: ['', Validators.required], products: this.formBuilder.a

我想设置值以形成数组,但无法设置新值

我尝试使用patch value设置值,但失败

//in component.ts
this.packageForm = this.formBuilder.group({
  title: ['', Validators.required],
  productImage: ['', Validators.required],
  price: ['', Validators.required],
  products: this.formBuilder.array([
    this.addProductFormGroup()
  ])
})

//form builder Array
addProductFormGroup(): FormGroup {
 return this.formBuilder.group({
  productNames: ['',Validators.required],
  productQuantities: ['',Validators.required]
})
}

 //adding row
addProductsRow() 
{
 (<FormArray>this.packageForm.get('products'))
 .push(this.addProductFormGroup();
}

//deleting row
 removeProductsRow(productGroupIndex: number) {  
 (<FormArray>this.packageForm.get('products'))
 .removeAt(productGroupIndex);
}

addPackage() {
this.productNames=null;
this.productQuantities=null;
this.packageForm.value.products.forEach(element => {
  this.productNames = (this.productNames == null) ? element.productNames 
   : this.productNames + "~" + element.productNames;
   this.productQuantities = (this.productQuantities == null) ? 
  element.productQuantities : this.productQuantities + "~" + 
   element.productQuantities;
  });
}
//在component.ts中
this.packageForm=this.formBuilder.group({
标题:['',验证器。必填],
productImage:['',验证程序。必需],
价格:['',验证器。必需],
产品:this.formBuilder.array([
this.addProductFormGroup()
])
})
//表单生成器数组
addProductFormGroup():FormGroup{
返回此.formBuilder.group({
产品名称:['',验证程序。必需],
产品数量:['',验证器。必需]
})
}
//添加行
addProductsRow()
{
(this.packageForm.get('products'))
.push(this.addProductFormGroup();
}
//删除行
removeProductsRow(productGroupIndex:number){
(this.packageForm.get('products'))
.removeAt(productGroupIndex);
}
addPackage(){
此.productNames=null;
此.productQuantilities=null;
this.packageForm.value.products.forEach(元素=>{
this.productNames=(this.productNames==null)?element.productNames
:this.productNames+“~”+element.productNames;
this.productQuantilities=(this.productQuantilities==null)?
element.productQuantilities:this.productQuantilities+“~”+
元素数量;
});
}
我通过这个点击事件从表单中获取值
addPackage()
,我想要 以[oil~ sugar~ Fare]和[code>的形式发送此格式的表单数据
productNames
productQuantity
as[4~3~5]

  addPackage() {
    const data = this.packageForm.getRawValue();
    this.productNames = data.products.map(e => e.productNames).join('~');
    this.productQuantities = data.products.map(e => e.productQuantities).join('~')
  }

试试这个:

  private addPackage() {
    const productNames = [];
    const productQuantities = [];

    this.packageForm.value.products.forEach(element => {
      productNames.push(element.productNames);
      productQuantities.push(element.productQuantities);
    });

    return {
      productNames: '[' + productNames.join('~') + ']', 
      productQuantities: '[' + productQuantities.join('~') + ']'
    };
  }
在onSubmit处理程序中,您可以创建一个新对象,该对象将被发送到后端api。如下所示:

onSubmit() {
    const obj = this.addPackage();

    console.log(obj.productNames);
    console.log(obj.productQuantities);

    const dataToSend = {
      ...obj,
      title: this.packageForm.controls.title.value,
      price: this.packageForm.controls.price.value
    };

    // send this object to the backend API
    console.log(dataToSend)

  }
.

试试这个:

  private addPackage() {
    const productNames = [];
    const productQuantities = [];

    this.packageForm.value.products.forEach(element => {
      productNames.push(element.productNames);
      productQuantities.push(element.productQuantities);
    });

    return {
      productNames: '[' + productNames.join('~') + ']', 
      productQuantities: '[' + productQuantities.join('~') + ']'
    };
  }
在onSubmit处理程序中,您可以创建一个新对象,该对象将被发送到后端api。如下所示:

onSubmit() {
    const obj = this.addPackage();

    console.log(obj.productNames);
    console.log(obj.productQuantities);

    const dataToSend = {
      ...obj,
      title: this.packageForm.controls.title.value,
      price: this.packageForm.controls.price.value
    };

    // send this object to the backend API
    console.log(dataToSend)

  }

.

问题不清楚,你能详细说明问题和你需要得到什么吗?嗨,sudhakar,我想在将其发送到服务文件之前,将“productNames”和“ProductQuantity”的值更改为[oil~sugar~four]和[4~3~5]。我从如下数组中获取数据
0:{productNames:“oil”,ProductQuantity:“4”}1:{PRODUCTNAME:“sugar”,ProductQuantity:“3”}2:{PRODUCTNAME:“Faur”,ProductQuantity:“5”}
问题不清楚,能否详细说明问题以及需要获得什么?嗨,sudhakar,我想将“PRODUCTNAME”和“ProductQuantity”的值更改为[oil~ sugar~ fare]和[4~3~5]在将其发送到服务文件之前。我从如下数组中获取数据:
0:{productNames:“oil”,ProductQuantilities:“4”}1:{productNames:“sugar”,ProductQuantilities:“3”}2:{productNames:“Farror”,ProductQuantilities:“5”}
你好,罗伯特,谢谢你的贡献。
提交
点击此按钮,我将获得表单数据如何使用onSubmit(),我们可以使用addPackage()和onSubmit()吗同时,是的,您可以。添加提交按钮如下:
submit
,并在您的TS文件中从onSubmit方法调用addPackage。我非常感谢,非常感谢您的贡献。
submit
单击此按钮后,我得到表单数据如何使用onSubmit(),我们可以使用addPackage()和onSubmit()吗同时,是的,您可以。添加提交按钮如下:
submit
,并在您的TS文件中从onSubmit方法调用addPackage。我非常感谢,非常感谢