Angular 被动形式:数组属性被转换为对象
这一问题可以从以下方面看出: 我有一个有效载荷:Angular 被动形式:数组属性被转换为对象,angular,angular-forms,Angular,Angular Forms,这一问题可以从以下方面看出: 我有一个有效载荷: payload={ id:1, 名称:“这是有效负载”, 儿童:[ {id:1,名称:'Child 1'} ], }; 我从中创建了一个表单组: this.form=this.fb.group(this.payload); 然后显示窗体的值: {{form?.value | json} 结果是: {“id”:1,“name”:“这是有效负载”,“children”:{“id”:1,“name”:“child1”} 如您所见,childre
payload={
id:1,
名称:“这是有效负载”,
儿童:[
{id:1,名称:'Child 1'}
],
};
我从中创建了一个表单组:
this.form=this.fb.group(this.payload);
然后显示窗体的值:
{{form?.value | json}
结果是:
{“id”:1,“name”:“这是有效负载”,“children”:{“id”:1,“name”:“child1”}
如您所见,children
属性从一个数组变为一个对象
您应该声明数组的数组,因为组将数组作为参数[值,…验证器]:
payload = {
id: 1,
name: 'This is the payload',
children: [[
{ id: 1, name: 'Child 1' },
]],
};
要根据声明数组值,请执行以下操作:
如果您想创建动态表单,请查看。谢谢,这就带来了一个问题,有没有一种方法可以从简单数组自动创建双数组(或
fb.array
)?或者我必须迭代每个属性并测试它是否是数组,然后将其更改为双数组吗?我在帖子中共享的angular.io链接解释说,对于动态表单,可以创建一个YourModelControlService
,将对象转换为表单组。在您的情况下,您需要确定它是否是数组,并在toFormGroup
函数中使用fb.array
。没有看到链接,谢谢!我现在要回家了,但我星期一回来的时候一定会看的。
this.fb.group({
anArray: [[]]
});
// OR
this.fb.group({
anArray: this.fb.array([])
});
// OR
this.fb.group({
anArray: new FormControl([])
});