Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 写入角度对象的嵌套数组时出现问题_Javascript_Arrays_Angular_Typescript - Fatal编程技术网

Javascript 写入角度对象的嵌套数组时出现问题

Javascript 写入角度对象的嵌套数组时出现问题,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,我有一个模型组件,它定义了我正在使用的数据结构。然后,我在另一个组件中使用该模型,并尝试向其写入数据。我在写入数据结构中的“嵌套”对象数组时遇到了挑战。我很确定这是因为我没有正确地声明嵌套数组(实例化了它),但不知道如何正确地执行它。毫无疑问,这是我所知的一个局限,但经过几个小时的反复思考后,我想我应该寻求帮助。任何指导都将不胜感激 下面是简化的闪电战。。。 导出类冒险{ id?:字符串; 公司名称:字符串; 头像:字符串; 基扎瓦塔:弦; 活动:布尔值; 图像:字符串; poi:[{ co

我有一个模型组件,它定义了我正在使用的数据结构。然后,我在另一个组件中使用该模型,并尝试向其写入数据。我在写入数据结构中的“嵌套”对象数组时遇到了挑战。我很确定这是因为我没有正确地声明嵌套数组(实例化了它),但不知道如何正确地执行它。毫无疑问,这是我所知的一个局限,但经过几个小时的反复思考后,我想我应该寻求帮助。任何指导都将不胜感激

下面是简化的闪电战。。。

导出类冒险{
id?:字符串;
公司名称:字符串;
头像:字符串;
基扎瓦塔:弦;
活动:布尔值;
图像:字符串;
poi:[{
completedflag:布尔型;
第一个提示:字符串;
第二个提示:字符串;
第三点:字符串;
基赞斯沃:弦;
quizfail:字符串;
喹唑酮:弦;
quizoptiontwo:字符串;
quizoptiontree:字符串;
提问:字符串;
quizsuccess:字符串;
排序器:编号;
目标:字符串;
}];
}
进口{
组成部分
}从“@angular/core”开始;
进口{
数据模型
}来自“./data.model”
@组成部分({
选择器:“我的应用程序”,
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent{
名称='角度';
testModel=新的数据模型();
createArray(){
this.testModel.firstname='Jack';
this.testModel.lastname='Brown';
this.testModel.pet[0].petalive=true;
this.testModel.pet[0].petname='Whiskers';
this.testModel.pet[0]。pettype='Cat'
}

}
这是一个数组类型为any的解决方案

希望对你有帮助


您的代码存在一些基本问题

我相信您希望使用
DataModel
作为结构类型。因此,如果要定义用于类型检查的类/接口,则应按以下方式定义data.model.ts:

export interface DataModel {
  firstname: string;
  lastname: string;
  pet: Array<Pet>;
}

interface Pet {
  petname: string;
  pettype: string;
  petalive: boolean;
}

请直接粘贴给您带来问题的代码中有意义的部分。这样,当你的问题得到回答时,它将帮助其他有同样问题的人。当然,我可以做任何事情来帮助他们。我对StackOverflow这个世界还是个新手,在几天前我发了一篇帖子之前,我甚至不知道stackblitz的存在在这篇文章中也会包含一些代码。非常感谢您的回复!这看起来是解决问题的一个有趣的选择。感谢您抽出时间提供回复!我熟悉接口的概念,但以前从未真正(正确地)使用过它们,所以这看起来是一个很好的机会!不客气:)是的!在此场景中,当您定义数据模型时,建议使用接口而不是类。此外,我还为您的
Pet
属性创建了一个单独的接口
Pet
。它比在类/接口上显式定义要干净得多!
testModel: DataModel = {
    firstname: undefined,
    lastname: undefined,
    pet: []
  };

createArray(){
  this.testModel.firstname = 'Jack';
  this.testModel.lastname = 'Brown';
  this.testModel.pet.push({
    petalive: true,
    petname: 'Whiskers',
    pettype: 'Cat'
  });
  console.log(this.testModel);  
  }