首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在角11中初始化接口类型数组

在角11中初始化接口类型数组
EN

Stack Overflow用户
提问于 2021-09-18 20:07:06
回答 2查看 462关注 0票数 1

我在角11中创建了名测试接口

代码语言:javascript
复制
 export interface Test {
      id:number;
      name:string;
    }

然后导出接口并创建其名为ProvinceAllStudent的数组。

代码语言:javascript
复制
import { Test } from './../../../student/Models/test';
import { Component, OnInit } from '@angular/core';
import { Province } from 'src/app/student/Models/Province.model';
@Component({
  selector: 'app-general-statistic',
  templateUrl: './general-statistic.component.html',
  styleUrls: ['./general-statistic.component.css']
})
export class GeneralStatisticComponent implements OnInit {
Provinces:any[];
ProvinceAllStudent:Test[]=[];

  constructor(
) { }

  ngOnInit(): void {
 this.CalculateProvinceStudents()
  }
  CalculateProvinceStudents()
  {
     for(let j=0;j<5;j++)
     {
      this.ProvinceAllStudent[j].id=j;
      this.ProvinceAllStudent[j].name='A';
     }
  }

}

当我运行应用程序时,我得到了错误。

GeneralStatisticComponent.CalculateProvinceStudents (general-statistic.component.ts:23)

core.js:6210 ERROR TypeError:无法设置未定义的属性(设置'id')

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-18 20:16:59

因为this.ProvinceAllStudent[j]undefined,所以您尝试给它的一个属性赋值。(undefined没有idname属性,因此会引发异常。)

我建议使用数组的push方法。例如

代码语言:javascript
复制
for (let j = 0; j < 5; j++) {
  this.ProvinceAllStudent.push({ id: j, name: 'A' });
}

或者作为替代方案,您可以通过这种方式按索引添加元素:

代码语言:javascript
复制
for(let j = 0; j < 5; j++) {
  this.ProvinceAllStudent[j] = {id: j, name: 'A'};
}
票数 2
EN

Stack Overflow用户

发布于 2021-09-18 20:14:04

在数组中修改对象之前,需要先创建对象。

代码语言:javascript
复制
this.ProvinceAllStudent.push({
  id: j,
  name: 'A'
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69238068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档