html - 如何修复未定义的 "ERROR TypeError: Cannot set property ' id'

标签 html angular typescript

当我尝试从 html 调用 getHistoryData() 时,出现错误“错误类型错误:无法设置未定义的属性‘id’”。

export class Data { 
    id : string ;
    fromTime : any ;
    toTime : any ;
    deviceType : string ;
    interval : any;
    params : string;
}




// payload : Data = {
  //   id : "00:12:4b:00:19:7b:27:7",
  //   fromTime: "1554422400000",
  //   toTime: "1554508799000" ,
  //   deviceType: "xxx",
  //   interval: "1199999",
  //   params: "temperature"
  // }

  payload : Data;

  response : any;


  generatePayload(){
    this.payload.id = "00:12:4b:00:19:7b:27:7",
    this.payload.fromTime = "1554422400000",
    this.payload.toTime = "1554508799000",
    this.payload.deviceType = 'xxx' , 
    this.payload.interval = 1000 ,
    this.payload.params = this.selectedParameter
  }

  getHistoryData(){
    this.generatePayload()
     this.historyDataService.getHistoryData(this.payload)
           .subscribe((data) => this.response = data)
  }

当我直接分配有效载荷对象的值时有效,如注释代码所示,但当我尝试通过函数分配数据时它会抛出错误。

最佳答案

在为它分配任何值之前,您需要使用对象初始化您的 payload 属性。

payload : Data = {
  id : undefined,
  fromTime: undefined,
  toTime: undefined ,
  deviceType: undefined,
  interval: undefined,
  params: undefined
};

generatePayload(){
  this.payload.id = "00:12:4b:00:19:7b:27:7",
  this.payload.fromTime = "1554422400000",
  this.payload.toTime = "1554508799000",
  this.payload.deviceType = 'xxx' , 
  this.payload.interval = 1000 ,
  this.payload.params = this.selectedParameter
}

关于html - 如何修复未定义的 "ERROR TypeError: Cannot set property ' id',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55646167/

相关文章:

javascript - Express.js 如何使用 response.render 在客户端呈现 html?

html - 除此之外,还有更优雅的方式来格式化表格中的表单吗?我有不同的数字行

SonarQube 6.x 的 Angular2 插件

angular - 如何以 Angular 获取表中选定的行值?

javascript - 使用 Angular 从选项下拉列表中过滤/搜索

javascript - 使用数组属性展平复杂对象的数组

java - 更改从 servlet 类返回的 div 类位置

html - 将 Wordpress 更改为 RTL 时出现奇怪的空白

angular - 如何在 Angular 中重新设计 Plotly 图表的样式

node.js - TypeScript 和 NodeJS 项目配置