角度对象数组创建错误。 我想要表示的数据是以下形式:
stats : [
{
name : 'x',
age : 20
},
{
name : 'y',
age : 10
},
];
因此,在角度方面,我将其定义为:
stats: Array<{ name: string, age : number }> = [];
所以当我尝试像这样分配一些东西时:
this.stats[0]['name'] = 'x';
这会引发错误:
错误类型错误:无法设置未定义的属性“名称”
ps:我不想要这个问题的替代解决方案,因为我需要这种表示和数据绑定我的工作。 并且,我也无法预定义'stats'数组,因为它内部的数据是动态的,我没有固定的大小。
答案 0 :(得分:1)
stats: Array<{ name: string, age : number }> = [];
表示定义一个匿名对象数组,在数组的每个元素中都有一个名称和一个age属性。
分配&#39; x&#39;到你必须写的第一个索引的name属性:
this.stats[0] = { name: 'x', age: 10 };
如果您不想指定年龄,则必须将其定义为可选属性,如下所示:
stats: Array<{name: string, age?: number}> = [];
添加了问号。 不确定,但我相信定义一个命名对象并将数组声明为:
是一个好习惯stats: Stat[];
至少我是如何学习它的。
答案 1 :(得分:0)
定义一个接口并在绑定它之前实例化你的对象
export class AppComponent {
stats:Array<Idata>=[];
constructor(){
this.stats[0]={name:'x',age:10}
console.log(this.stats[0].name)
console.log(this.stats[0].age)
}
}
export interface Idata{
name:string,
age:number,
}
绑定到输入字段
<input type="text" [(ngModel)]="stats[0].name">
<强> Working StackBlitz 强>