开发者问题收集

使用 Angular6 Service 构造函数初始化私有属性

2020-02-28
65

我尝试在 Angular6 服务中初始化几个对象,但出现错误,说明我的一个私有属性未定义。

起初我尝试这样做:

private mockIncident: Incident[];

constructor() {
    this.mockIncidentRaw.forEach(incident => {
      this.mockIncident.push(new Incident().deserialize(incident))
    });
  }

但出现错误,提示 mockIncident 未定义。
错误:未捕获(在承诺中):TypeError:无法读取未定义的属性“push”。

public mockIncident: Incident[];

  constructor() {
    init();
  }
  
  init = () => {
    for(let i = 0; this.mockIncidentRaw.length; i++) {
      this.mockIncident.push(new Incident().deserialize(this.mockIncidentRaw[i]))
    } 
  }
2个回答

public mockIncident: Incident[]; 声明了一个未定义的对象。

执行此操作 public mockIncident: Incident[] = [] ,以便进行数组初始化。在这里,您将拥有数组的所有属性,如 push()

Axiome
2020-02-28

mockIncident 数组未初始化,add = [];

private mockIncident: Incident[] = [];
porgo
2020-02-28