【发布时间】:2021-01-12 21:10:31
【问题描述】:
我需要在同一个节点下为两个不同的数组创建一个 formControl,这样我就可以在给定的 Reactive 表单中添加和删除相应的嵌套节点。
预期的 JSON 格式:
{
"title": null,
"days": [
{
"date": null,
"nodes": [
{
"type": "leg",
"from": null,
"to": null
},
{
"type": "activity",
"category": null
}
]
}
]
}
我已经实现了对日期和节点的控制,我可以分别添加和删除表单字段,但是我需要对节点下的类型腿和活动进行单独的控制。
这里有没有办法实现嵌套的formControl?
更新: 一个表单数组下需要两个表单组,请帮忙用HTML实现。
initX() {
return this.fb.group({
'date': [],
'nodes': this.fb.array([
this.initY(),
this.initZ()
]),
});
}
initY() {
return this.fb.group({
'type': ['leg'],
'from': [],
'to': []
})
}
initZ() {
return this.fb.group({
'type': ['activity'],
'category':[],
'cost':[]
})
}
错误:找不到带有路径的控件:'days -> 0 -> nodes -> 1 -> from'
可以在这里找到示例代码的stackblitz:https://stackblitz.com/edit/angular-ivy-fkgxrr
【问题讨论】:
-
不清楚您所说的“我需要对节点下的类型腿和活动进行单独的控件”是什么意思,因为在您的示例中,您已经有两种不同的方法返回了不同的结构。
-
嗨@FrancescoColamonici 我能够在JSON 中进行格式化,但是在HTML 下的formArray 中没有任何控件。日期和节点分别使用单独的控件循环,我希望对 Leg 和 Activities 执行相同的操作,但是在节点下。
-
@FrancescoColamonici 我更新了我的描述。
标签: javascript angular angular-reactive-forms angular-forms angular-formbuilder