-1

我正在尝试将多个选定项目作为数组推送,但出现错误“无法读取未定义的属性‘推送’”


payload: Array<any>;

runRequests() {
    const dialogRef = this.dialog.open(DashboardDialogComponent, {
      width: '280px', height: 'auto', data: { title: 'Run Now', details: 'Submit the request to run immediately' }
    });
    dialogRef.afterClosed().subscribe(result => {
      if (result) {
        this.selection.selected.forEach(element => {
          const request = { 'reqId': element.reqId, 'runAt': this.datePipe.transform(new Date(), "yyyy-MM-dd'T'H:mm:ssZZZ") };
          this.payload.push(request); //I am getting error in this line, 
        });
        this.store.dispatch(new requestDashboardActions.RunNow(this.payload));
      }
    });
  }

4

2 回答 2

1

您需要初始化属性:

payload: Array<any> = []

如果您检查转译的 javascript 文件,则不会调用属性payload,除非您使用空数组对其进行初始化[]

打字稿游乐场

更新:

我认为这是班级的财产。如果它只是一个局部变量,只需删除this关键字。

payload.push(request)
于 2019-02-04T16:59:30.700 回答
0

您需要为

 payload: Array<any> = []

如果您不分配 JS 将隐式为其分配一个值undefined并且undefined没有push方法。

于 2019-02-04T17:03:03.633 回答