Ошибка превышения максимального стека вызовов происходит в основном, когда функция подвергается бесконечной рекурсии.Разве это не очевидно в коде, что вы подписались на то, что снова обновляет значение.В вашем коде вы делаете
this.shared.updatedAmount(this.totalAmount);
, который обновит значение и сгенерирует четность с темой поведения
updateAmountValue: BehaviorSubject<number> = new BehaviorSubject(0);
И вы подписались на эту тему, которая снова обновит значениеи так, что приводит к бесконечному рекурсивному состоянию.
Возможное решение
Вы можете получить значение предмета напрямую, а не подписываться на него.
onItemDeSelect(uncheckedItem) {
this.eachItem.itemExtraOptionPrice.prices.forEach(item => {
let value = this.updateAmountValue.getValue();
if (item.id === uncheckedItem.id) {
this.totalAmount = value - item.amount;
this.shared.updatedAmount(this.totalAmount);
}
});
}
Это не приведет к рекурсивным условиям.Надеюсь, это поможет.