我有一个包含FormArray的人的表单。人们数组,那么包含地址的FormArray这给我下面的JSON:Angular 2 - 从FormArray创建对象的数组
{
"people": [
{
"lastName": "Last-1",
"firstName": "First-1",
"middleName": "",
"addresses": [
{
"street": "Person1 - Address1"
},
{
"street": "Person1 - Address2"
}
]
},
{
"lastName": "Last-2",
"firstName": "Last-2",
"middleName": "",
"addresses": [
{
"street": "Person2 - Address1"
}
]
}
]
}
现在我想要把这些“人”,从形式和创建一个Person对象的数组
export class ReportPerson {
lastName: string = '';
firstName: string = '';
middleName: string = '';
addresses: PersonAddress[];
}
export class PersonAddress {
street: string = '';
}
当我使用console.log(form.get('people').value);我得到以下结果:
(2) [{…}, {…}]0: {lastName: "Last-1", firstName: "First-1", middleName: "",
addresses: Array(2)}
1: {lastName: "Last-2", firstName: "Last-2", middleName: "",
addresses: Array(1)}length: 2__proto__: Array(0)
但是不管我如何获取数据,它说我的列表是未定义的。例如,以下内容返回它不能读取未定义的“lastName”。
save(form: any) {
var reportPersonList: ReportPerson[] = new Array();
var people = form.get('people');
for (let i = 0; i < people.length; i++) {
console.log(people[i].lastName);
}
}
}
我的问题是,从FormArray中的数据创建人物对象数组的正确语法是什么?我知道这是我错过的一些基本的东西,但我已经习惯了C#,并且对于Typescript/Angular2来说是新的。
如果您能够在控制台中获取值,然后使用form.get('people')。value,然后在var people = form.get('people')。value中使用相同的值。 – Sreemat
这是任何错字错误? – Sreemat
我可以看到没有错字。智能感知不显示任何。我可以无误地添加/删除数组。 我可以获取'people'的值和长度,但只要我尝试遍历数组并访问属性,就会得到未定义的错误。 –