Это код моей службы Angular ....
export class DataService{
products = {
'productsList': [
{id: 101, name: 'Apple', qty: 2},
{id: 102, name: 'Mango', qty: 1},
{id: 103, name: 'Grapes', qty: 1},
{id: 104, name: 'Banana', qty: 3}
]
};
constructor() {}
getProducts(){
return this.products.productsList;
}
addProduct(obj: {id:number, name:string, qty:number}){
this.products.productsList.push(obj);
}
}
а этот от углового компонента ...
export class AppComponent implements OnInit{
pId!:number;
pName!:string;
pQty!:number;
pObject!:{id:number, name:string, qty:number};
pObjectArray:{id:number, name:string, qty:number}[] = [];
constructor(private dataService: DataService) {};
ngOnInit(){
this.pObjectArray = this.dataService.getProducts();
}
addProduct(){
this.pObject = {
id: this.pId,
name: this.pName,
qty: this.pQty
}
this.dataService.addProduct(this.pObject);
}
}
Поэтому я просто хочу знать, когда мы загрузим этот компонент, тогда ngOnIniti () будет вызван один раз, и он вызовет метод getProducts () из класса службы, а затем мы получим данные из службы через этот метод и назначим их Свойство pObjectAray внутри компонента. что нормально. но теперь, если я добавлю какой-либо новый продукт, вызвав метод addProduct () компонента, а затем этот метод вызовет addProduct () службы, чтобы он обновил объект продуктов службы, поэтому теперь объект продуктов имеет 5 новых продуктов вместо 4 потому что мы только что добавили новый. Итак, мой вопрос в том, как getProducts () внутри ngOnInit выполняется автоматически и обновляет свойство pObjectArray компонента?
Я имею в виду, что ngOnIniti () вызывается только один раз, когда мы загружаем компонент, поэтому на этот раз ngOnInit () не будет выполняться, и я уже протестировал его, распечатав какое-то сообщение с помощью console.log () внутри ngOnInit (). Итак, пожалуйста, объясните мне, как данные автоматически обновляются в компоненте при каждом изменении. например, если мы добавляем новые данные, удаляем или изменяем данные, тогда он автоматически обновляет pObjectArray обновленными данными.
Извините за мой плохой английский...