Ответ 1
publicDeals не инициируется
publicDeals: Deal[] = [];
это сообщение об ошибке "не может прочитать свойство" 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);
}
}
publicDeals не инициируется
publicDeals: Deal[] = [];
вам нужно инициализировать массив, используя ниже:
publicDeals: Deal[] = [];
или
publicDeals: Deal[] = new Array();
Если вы используете AngularFire5.0 Перед нажатием вы должны указать свои элементы.
const afList = afDb.list('items');
afList.push({ name: 'item' });
вы должны увидеть обновление Angularfire 5.0 здесь
Здесь находится массив чисел
items: number [] = [];