【问题标题】:Push into Array from Json Angular 5从 Json Angular 5 推入数组
【发布时间】:2018-10-16 12:15:34
【问题描述】:

我正在从端点接收以下响应

{
  "data": [{
    "volume": 4.889999866485596,
    "name": "Carton03",
    "weight": 5.75,
    "storage": 3
  }, {
    "volume": 2.6500000953674316,
    "name": "Carton02",
    "weight": 4.5,
    "storage": 2
  }, {
    "volume": 1.4500000476837158,
    "name": "Carton01",
    "weight": 5,
    "storage": 1
  }],
  "response": "true",
  "type": "Storages"
}

下面我试图在我的组件上创建一个数组:

export class StorageComponent {
   private data: any;
   private stors: Storage [];

   constructor (private storageService: StorageService  ) {}

   storage () {
     this.data =  this.storageService.Storage(); 
     //storageService.Storage is an assistant service that parse the response 
     // and brings me back only the data-array of the response
     for (let i = 0; i < this.data.data.length; i++) {
      const storages = this.data.data[i];
      console.log(storages.storage);
      console.log(storages.name);
      console.log(storages.weight);
      console.log(storages.volume);
      this.stors[i] = storages;
     }   
  }
}

我有一个常量存储来检查我是否可以评估数据 一切正常。

问题是我想填充我的变量stors,它是一个存储模型数组,具有这些属性、存储、名称等。

我正在尝试通过最后一行来做到这一点,但出了点问题, 得到:

Cannot set property '0' of undefined

有什么想法吗?

【问题讨论】:

    标签: arrays json angular typescript parsing


    【解决方案1】:

    错误是说在循环的第一次迭代期间,不可能分配给this.stors[0],因为它是未定义的。 stors 属性尚未初始化。考虑:

    constructor (private storageService: StorageService) {
        this.stors = [];
    }
    

    【讨论】:

      【解决方案2】:

      在定义stors 属性时只需进行初始化,如下所示:

      private stors: Storage[] = [];
      

      您也可以初始化其他属性:

      private data: any = null;
      

      你可以在构造函数或 ngOnInit 中初始化它,但我认为像这样直接在属性中初始化数组是更好的方法。

      初始化你的类属性将避免这种行为。

      【讨论】:

        猜你喜欢
        • 2018-06-03
        • 2019-03-26
        • 1970-01-01
        • 2018-07-04
        • 2018-10-17
        • 2018-07-25
        • 1970-01-01
        • 2016-06-14
        • 1970-01-01
        相关资源
        最近更新 更多