从响应式表单中的嵌套 Table FormArray 获取价值
Getting Value From Nested Table FormArray In Reactive Forms
我无法根据数量 * 价格找到数量。问题是因为每一行都有子行我怎样才能从数量和价格中得到数量?下面是我的代码。
这里也是link我的演示代码PLEASE CLICK THIS
getAmount(value: FormControl) {
const control = <FormArray>this.myForm.controls['people'];
this.total = 0;
control.controls.forEach((field) => {
field.get('addresses')['controls'].forEach(element => {
const col1 = +field.get('price')
const col2 = +element.get('quantity');
const sum = col1 * col2;
// Get Amount
element.get('amount').patchValue(sum, { emitEvent: false });
// Get Grand Total
this.total += sum;
});
});
}
这样试试:
如果您想根据 quantity * price
计算金额
<td>
{{ myForm['controls'].people.controls[i].controls.addresses.controls[j].controls.amount.value }}
</td>
getAmount(value) {
value.forEach((pdata, i) => {
pdata.addresses.forEach((data, k) => {
this.myForm['controls'].people['controls'][i].controls.addresses.controls[k].controls.amount.patchValue((pdata.price * data.quantity), { emitEvent: false });
})
});
这里的问题是您试图将 FormControl 转换为数字,而您需要从控件获取值然后转换为数字:
所以代替:
const col1 = +field.get('price')
const col2 = +element.get('quantity');
你应该这样做:
const col1 = +(field.get('price').value || 0);
const col2 = +(element.get('quantity').value || 0);
我无法根据数量 * 价格找到数量。问题是因为每一行都有子行我怎样才能从数量和价格中得到数量?下面是我的代码。
这里也是link我的演示代码PLEASE CLICK THIS
getAmount(value: FormControl) {
const control = <FormArray>this.myForm.controls['people'];
this.total = 0;
control.controls.forEach((field) => {
field.get('addresses')['controls'].forEach(element => {
const col1 = +field.get('price')
const col2 = +element.get('quantity');
const sum = col1 * col2;
// Get Amount
element.get('amount').patchValue(sum, { emitEvent: false });
// Get Grand Total
this.total += sum;
});
});
}
这样试试:
如果您想根据 quantity * price
<td>
{{ myForm['controls'].people.controls[i].controls.addresses.controls[j].controls.amount.value }}
</td>
getAmount(value) {
value.forEach((pdata, i) => {
pdata.addresses.forEach((data, k) => {
this.myForm['controls'].people['controls'][i].controls.addresses.controls[k].controls.amount.patchValue((pdata.price * data.quantity), { emitEvent: false });
})
});
这里的问题是您试图将 FormControl 转换为数字,而您需要从控件获取值然后转换为数字:
所以代替:
const col1 = +field.get('price')
const col2 = +element.get('quantity');
你应该这样做:
const col1 = +(field.get('price').value || 0);
const col2 = +(element.get('quantity').value || 0);