Я делаю курс удеми по угловому и наткнулся на этот код. У меня есть пример проекта, который имеет кнопку Добавить элемент, который добавляет новый элемент в массив и отображает обновленный массив на экране.
shopping-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);
}
}
У меня есть источник событий, который генерирует обновленный массив при нажатии кнопки «Добавить».
shopping-list.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 ()of shopping-list.component.ts запускается только один раз, как отображается обновленный список при каждом нажатии кнопки «Добавить»?