angular - 具有动态字段的反应式表单嵌套 FormArray
问题描述
我将从后端获取项目列表及其爱好列表,用户应该能够编辑/添加。
let item of ['item1', 'item2', 'item3']
(ngSubmit) 值;
我想关注输出:
item1: {
hobbyList: Array[0]
name: null
},
item2: {
hobbyList: Array[0]
name: null
},
item3: {
hobbyList: Array[0]
name: null
}
我试过这样做但得到以下错误
ERROR
Error: Cannot find control with name: 'item1.hobbyList'
Unable to display error. Open your browser's console to view.
有没有其他方法可以实现这一点。
链接:到目前为止我已经尝试过 Stackblitz:https ://stackblitz.com/edit/angular-qsq3yb?file=src%2Fapp%2Fapp.component.ts
解决方案
如果要创建以下数组:
item1: {
hobbyList: Array[0]
name: null
},
item2: {
hobbyList: Array[0]
name: null
},
item3: {
hobbyList: Array[0]
name: null
}
那么你只需要使用map
功能:
let fooArray = ['item1', 'item2', 'item3'];
let desiredArray = fooArray.map(a => {
let obj = {};
obj[a] = {
hobbyList:[],
name : ''
};
return obj;
});
console.log(desiredArray);
推荐阅读
- javascript - 鼠标滚轮时在垂直滑动器滑动内嵌套滚动:true
- r - 如何在ggplot2中手动更改线型
- javascript - 需要在同一个 HTML 页面调用的两个不同 JS 文件中的两个 $(document).ready 函数之间进行优先级排序
- amazon-web-services - 如何查看日志流后面的 IP 地址到 CloudWatch
- windows - 如何从 UIAutomation 获取隐藏/私有 UI 元素,我可以在 Spy++ 中看到它,但无法在代码中找到它,只有它的父母和兄弟姐妹
- angular - 来自特定路由时不要执行 Nx 的路由导航
- regex - 在特定引用的字符串中交换反斜杠的模式
- r - ggplot:将轴文本放在绘图内
- android - “加号表示这应该创建为一个新的 ID”——而不是什么?
- sql - 根据一列删除选择查询中的重复项