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

Сначала я попробовал это:

private mockIncident: Incident[];

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

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

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

public mockIncident: Incident[];

  constructor() {
    init();
  }
  
  init = () => {
    for(let i = 0; this.mockIncidentRaw.length; i++) {
      this.mockIncident.push(new Incident().deserialize(this.mockIncidentRaw[i]))
    } 
  }
1
NeitoFR 28 Фев 2020 в 16:57

2 ответа

Лучший ответ

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

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

3
Exomus 28 Фев 2020 в 14:08

Массив mockIncident не инициализирован, add = [];

private mockIncident: Incident[] = [];
2
porgo 28 Фев 2020 в 14:04