如何使用推将对象添加到数组?

时间:2019-02-04 16:58:25

标签: javascript angular6 ngrx ngrx-store-4.0

我正在尝试将多个选定项作为数组推送,但是收到错误消息“无法读取未定义的属性'push'”


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));
      }
    });
  }

2 个答案:

答案 0 :(得分:1)

您需要初始化属性:

payload: Array<any> = []

如果您检查转译的javascript文件,除非您使用空数组payload对其进行初始化,否则将没有名为[]的属性

Typescript playground

更新

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

payload.push(request)

答案 1 :(得分:0)

您需要为

分配一个初始值
 payload: Array<any> = []

如果您不分配JS,则会为其隐式分配一个值undefined,而undefined则没有push方法。