Angular Iam无法将值设置为formArray
我想设置值以形成数组,但无法设置新值 我尝试使用patch value设置值,但失败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
//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。我非常感谢,非常感谢