rxjs Subject не передает значения подписчикам
У меня есть приложение, которое обрабатывает запрос пользователя на покупку конкретных товаров и добавляет их в корзину. Для менеджмента этих действий я использую Subject и Subscription. Запрос на товары из API проходит хорошо - все товары выводятся, но абсолютно аналогичная операция с кликом на кнопку и добавлением в новый массив не дает ничего. Никакие данные не эмитятся. Я подписан на правильный Subject... вроде. Не понимаю, в чем дело, подскажите пожалуйста.
// переменные
inCart: Item[] = [];
itemsChanged = new Subject<Item[]>();
// метод добавления
addProduct(id) {
const addedItem = this.shoppingCart.find((item) => item.id === id);
this.inCart.push(addedItem);
console.log(this.inCart); // выводит новый элемент корзины
this.addedItemsChanged.next(this.inCart.slice());
}
// подписка в дочернем компоненте, не получает ничего
ngOnInit(): void {
this.itemsChangedSub = this.ShoppingCartService.addedItemsChanged.subscribe(
(data) => {
console.log(data);
if (data.length > 0) {
this.changedItems = data;
}
}
);
}
Ответы (1 шт):
Автор решения: Alvor
→ Ссылка
При использовании метода .slice() нужно как минимум передавать индекс начала копирования. В этом примере: this.addedItemsChanged.next(this.inCart.slice(0));