角6:无法设置未定义的属性

时间:2018-11-17 20:14:45

标签: angular typescript

我有一个奇怪的错误,在我的应用程序上阻止了我前进。 我有一个类型为any[]的变量,该变量将我用作表的数据源:

<table mat-table  [dataSource]="EcoSummaryList">

变量被初始化为一个空数组。但是,当我什至试图将某些东西分配到数组中时,都会出现以下错误:

  

core.js:12632错误TypeError:无法设置属性'EcoSummaryList'   在以下位置未定义   push ../ src / app / eco-summary / eco-summary.component.ts.EcoSummaryComponent.OnSummaryLoad

以下是相关代码:

public EcoSummaryList: any[] = [];

OnSummaryLoad(data: any) {
  this.EcoSummaryList = [];
  console.log(data);

  if (data == undefined || data == null) return;
  this.EcoSummaryList = data;

}

数据对象没事,数据也没事,它过去曾经工作过。

我试图查看其他文章以找到答案,但没有成功,我还尝试在构造函数ngOnInit处初始化数组,并从类型Array<MyClass>创建var,然后致电new Array<MyClass>();

似乎没有任何作用,有什么建议吗?

更新:即使我注释掉<table>并将其刚分配给[]到变量中,我仍然遇到相同的错误。

1 个答案:

答案 0 :(得分:1)

看起来像OnSummaryLoad未被视为组件方法。不知道为什么。您可能要尝试使用箭头函数语法。使用它应该解决它:

public EcoSummaryList: any[] = [];

OnSummaryLoad = (data: any) => {
  this.EcoSummaryList = [];
  console.log(data);

  if (data == undefined || data == null) return;
  this.EcoSummaryList = data;

}