Подтвердить что ты не робот

Не удается прочитать свойство "push" undefined (...) в angular2

это сообщение об ошибке "не может прочитать свойство" push "из undefined" при использовании кода ниже

  let deal = new Deal(  5, 'afaf', 'dafa',5,23 ) 
  this.publicDeals.push( deal )   // gives a error saying Cannot read property 'push' of undefined(…)

Все показано ниже

export class Deal { 
  constructor(
    public id: number,
    public name: string,
    public  description: string,
    public originalPrice: number,
    public salePrice: number
      ) { }    
}

В другом компоненте

import { Component, OnInit } from '@angular/core'; 
import { Deal } from '../deal';
import { DealService } from '../deal.service';

@Component({
  selector: 'public-deals',
  templateUrl: 'public-deals.component.html',
  styleUrls: ['public-deals.component.css']
})

export class PublicDealsComponent implements OnInit {
  publicDeals: Deal[];

  constructor(
    private dealService: DealService) {
  }

  ngOnInit(): void {    
      let deal = new Deal(  5, 'afaf', 'dafa',5,23 ) 
      this.publicDeals.push( deal )   // gives a error saying Cannot read property 'push' of undefined(…)

  }

  purchase(item){
    alert("You bought the: " + item.name);
  }
}
4b9b3361

Ответ 1

publicDeals не инициируется

publicDeals: Deal[] = [];

Ответ 2

вам нужно инициализировать массив, используя ниже:

publicDeals: Deal[] = [];

или

publicDeals: Deal[] = new Array();

Ответ 3

Если вы используете AngularFire5.0 Перед нажатием вы должны указать свои элементы.

const afList = afDb.list('items');
afList.push({ name: 'item' });

вы должны увидеть обновление Angularfire 5.0 здесь

Ответ 4

Здесь находится массив чисел

items: number [] = [];