Вставить в массив из Json Angular 5 - PullRequest
0 голосов
/ 06 мая 2018

Я получаю от конечной точки следующий ответ

{
  "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;
     }   
  }
}

У меня есть const хранилища, чтобы проверить, могу ли я оценивать данные и все в порядке.

Проблема в том, что я хочу заполнить свою переменную stors, которая является массивом модели хранилища, которая имеет эти атрибуты, хранилище, имя и т. Д.

Я пытаюсь сделать это до последней строки, но что-то не так, получение:

Cannot set property '0' of undefined

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Просто выполните инициализацию при определении свойства stors следующим образом:

private stors: Storage[] = [];

Вы можете инициализировать и другие свойства:

private data: any = null;

вы можете инициализировать это в конструкторе или ngOnInit, но я думаю, что такой способ лучше инициализировать массивы непосредственно в свойствах.

Инициализация свойств вашего класса позволит избежать такого поведения.

0 голосов
/ 06 мая 2018

Ошибка говорит о том, что во время первой итерации цикла присвоение this.stors[0] невозможно, поскольку оно не определено. Свойство stors не было инициализировано. Рассмотрим:

constructor (private storageService: StorageService) {
    this.stors = [];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...