初始化对象数组 - Angular

时间:2018-03-19 11:22:23

标签: arrays angular typescript object

我有一个对象数组,当我尝试访问它时,我收到一条错误说:

  

TypeError:无法设置未定义的属性“ID”

我的代码如下:

export class Carimplements OnInit {
  pieces: Piece[] = [];

  test(pos){
    this.pieces[pos].ID = "test";
  }
}

成为一个对象

export class Piece{
    ID: string;
    doors: string;
}

我从HTML中使用有效位置调用test(pos)

我想我正在尝试访问尚未初始化的数组的位置X.我怎么能这样做?是否可以创建构造函数?

4 个答案:

答案 0 :(得分:1)

  • 在TypeScript中定义数组类型的正确语法是:

    pieces: Piece[] = [];
    
  • 错误是运行时错误。当您运行应用时,您有一个空数组pieces(但该变量仍然使用[]进行了初始化),但是您调用了test(whatever)来尝试访问数组元素whatever #39; t存在。

    你可以这样做:

    pieces: Piece[] = [{
      ID: '1',
      doors: 'foo'
    }];
    

    然后使用test(0)

  • 测试此方法

答案 1 :(得分:0)

您可以尝试以下方法

 test(pos){
    if(pos < this.pieces.length)
      this.pieces[pos].ID = "test";
    else
      // throw error
  }

答案 2 :(得分:0)

这个怎么样?

export class Carimplements OnInit {
  pieces: Piece[] = [];

  test(pos){
    this.pieces[pos] = {ID: "test"};
  }
}

答案 3 :(得分:0)

let pieces: Piece[]  = [];

//initialize object before assigning value
test(pos){
    this.pieces[pos] = new Piece();
    this.pieces[pos].ID = "test";
  }