Я делаю курс udemy по angular и наткнулся на этот код. У меня есть пример проекта, в котором есть кнопка «Добавить элемент», которая добавляет новый элемент в массив и отображает обновленный массив на экране.
покупка-edit.component.ts
export class ShoppingEditComponent implements OnInit {
@Input() ingredientsArray : Ingredient[];
shoppingItemName : string = 'Test';
shoppingItemAmount : number = 66;
constructor(private shoppingListService : ShoppingListService) { }
ngOnInit() {
}
onItemAdd(){
console.log(this.shoppingItemName)
this.shoppingListService.addIngredient(this.shoppingItemName, this.shoppingItemAmount);
}
}
У меня есть эмиттер событий, который испускает обновленный массив при нажатии кнопки «Добавить».
список покупок.service.ts
ingredientsChanged = new EventEmitter<Ingredient[]>();
addIngredient(name: string, value : number){
this.ingredients.push(new Ingredient(name, value));
this.ingredientsChanged.emit(this.ingredients.slice());
}
Чтобы отобразить список, я использую shopping-list.component.ts.
export class ShoppingListComponent implements OnInit {
constructor(private shoppingListService : ShoppingListService){}
ingredients : Ingredient[];
ngOnInit() {
this.ingredients = this.shoppingListService.getIngredients();
this.shoppingListService.ingredientsChanged.subscribe(
(ingredients : Ingredient[]) => {
this.ingredients = ingredients;
}
)
console.log("hello")
}
}
Поскольку ngOnInit() для shopping-list.component.ts запускается только один раз, как обновляющийся список отображается каждый раз, когда нажимается кнопка «Добавить»?