использовать конструктор сервиса Angular6 для инициализации частного атрибута - PullRequest
1 голос
/ 28 февраля 2020

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

Сначала я попытался это сделать:

private mockIncident: Incident[];

constructor() {
    this.mockIncidentRaw.forEach(incident => {
      this.mockIncident.push(new Incident().deserialize(incident))
    });
  }

Но я получил ошибку, сообщающую, что mockIncident не определен.
Ошибка: Uncaught (в обещании): TypeError: Невозможно прочитать свойство 'pu sh' из неопределенного.

А потом попробовал это:

public mockIncident: Incident[];

  constructor() {
    init();
  }
  
  init = () => {
    for(let i = 0; this.mockIncidentRaw.length; i++) {
      this.mockIncident.push(new Incident().deserialize(this.mockIncidentRaw[i]))
    } 
  }

Ответы [ 2 ]

3 голосов
/ 28 февраля 2020

public mockIncident: Incident[]; объявляет неопределенный объект.

Сделайте это public mockIncident: Incident[] = [], чтобы произошла инициализация массива. Здесь вы будете иметь все свойства массива, такие как push()

2 голосов
/ 28 февраля 2020

mockIncident массив не инициализирован, добавить = [];

private mockIncident: Incident[] = [];
...