【发布时间】:2020-05-02 19:42:22
【问题描述】:
我有一个动态创建的 Angular 响应式表单。
我有一个函数,当“速率”或“数量”字段发生变化时会调用该函数。我想遍历表单并将每个项目的费率和数量相乘,然后将它们加在一起以获得总计。
我该怎么做?我试过使用 .forEach,但这似乎不适用于 FormArrays
这是我表单的 json 结构:
{
"quoteDate": "2019-01-11T11:00:00",
"quoteItems": [
{
"description": "",
"quoteLineItems": [
{
"rate": 8,
"quantity": 78,
},
{
"rate": 2,
"quantity": 32,
}
]
},
{
"description": "",
"quoteLineItems": [
{
"rate": 24,
"quantity": 5,
}
]
},
{
"description": "",
"quoteLineItems": [
{
"rate": 1,
"quantity": 2145,
}
]
}
]
}
这就是我创建表单的方式:
createForm() {
this.quoteForm = this.fb.group({
quoteDate: [this.quote.quoteDate, Validators.required],
quoteItems: this.fb.array([])
});
this.addQuoteV2Item();
}
get quoteItems() {
return this.quoteForm.get('quoteItems') as FormArray;
}
quoteLineItems(index) {
return (this.quoteForm.get('quoteItems') as FormArray).at(index).get('quoteLineItems') as FormArray
}
addQuoteItem() {
this.quoteItems.push(this.fb.group({
description: '',
quoteLineItems: this.fb.array([])
}));
}
addQuoteLineItem(index, description) {
this.quoteLineItems(index).push(
this.fb.group({
rate: '',
quantity: '',
total: 0
})
)
}
【问题讨论】:
标签: angular