angular - 反应形式:数组属性被转换为对象
问题描述
这个问题可以在这个 stackblitz中看到:
我有一个有效载荷:
payload = {
id: 1,
name: 'This is the payload',
children: [
{ id: 1, name: 'Child 1' }
],
};
我从中创建了一个表单组:
this.form = this.fb.group(this.payload);
然后我显示表单的值:
{{ form?.value | json }}
结果是:
{ "id": 1, "name": "This is the payload", "children": { "id": 1, "name": "Child 1" } }
如您所见,该children
属性从一个数组变为一个对象。
- 那是怎么发生的 ?
- 是否可以阻止 Angular 这样做?
- 如果我需要使用 formArray,有没有办法让它自动化?
解决方案
您应该声明一个数组数组,因为 group 将数组作为参数 [value, ...validators] :
payload = {
id: 1,
name: 'This is the payload',
children: [[
{ id: 1, name: 'Child 1' },
]],
};
根据angular.io声明一个数组值:
this.fb.group({
anArray: [[]]
});
// OR
this.fb.group({
anArray: this.fb.array([])
});
// OR
this.fb.group({
anArray: new FormControl([])
});
如果您想制作动态表单,请查看这个 angular.io 页面。
推荐阅读
- sql - 如何根据重复的行值合并聚合函数结果 | SQL 甲骨文
- react-bootstrap-table - react-bootstrap-table-next 中的 onTableChange 函数总是返回 undefined
- asp.net-core - Blazor 布局中的顶部菜单
- c# - Acumatica 在 2020 r2 上发布自定义表格和自定义表格
- javascript - Discord.js/javascript 出现错误。如果(命令 ==='清除')。ReferenceError:命令未定义
- react-bootstrap - 在 Button (react-bootstrap) 中添加 SVG 图像作为图标?
- python - 在多索引熊猫DataFrame中选择每个索引的第一行
- html - 为什么我的深色主题按钮只会将边框变黑?
- python - 在 pandas 数据框中操作列表的有效方法
- postgresql - 从日期范围列类型中选择一个部分