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

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

变量初始化为空数组。但是,当我试图将某些内容分配到数组中时,会出现以下错误:
js:12632错误类型错误:无法设置
未定义的
推送../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处创建var作为from typeArray<MyClass>,然后调用new Array<MyClass>();
好像没什么用,有什么建议吗?
更新:即使我注释掉<table>并将[]分配到var中,我仍然会得到相同的错误。

最佳答案

似乎OnSummaryLoad没有被视为组件方法。不知道为什么。您可能需要尝试箭头函数语法。使用它可以解决问题:

public EcoSummaryList: any[] = [];

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

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

}

关于angular - Angular 6:无法设置未定义的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53355159/

10-11 08:43