в который вложен другой компонент. Вложенный компонент имеет @Input через который биндится переменная родительского. Во вложенном компоненте bind делается через getter/setter, то есть в setter я отлавливаю изменение значения переменной и делаю что-то. Иногда родительский компонент после какой-то операции должен инициировать выполнение этого чего-то. Но переменная не меняет своего значения. То есть setter не вызывается. Как это сделать ?
И живой пример. Родительский компонент - форма заказа. Вложенный - список товаров в заказе. Переменная - ID заказа (по нему обновляется список товаров). Родительский компонент добавляет товар через отдельную форму, и теперь нужно обновить список товаров, то есть нужно известить вложенный компонент, что это надо сделать, используя binding. ID заказа не поменялся. Как дернуть setter списка товаров?
через ngOnChanges не пробовали?
Есть несколько простых решений, как это можно сделать. Выберите, что вам подходит лучше. 1. Если родительский компонент знает о том, как менять товары, то пусть он и знает как их получать. Тогда ваш дочерний компонент будет получать этот список от родительского через Input и сразу же отображать. 2. Вам необходимо сделать некий общий сервис, в котором будет храниться актуальное состояние списка товаров. Все изменения будут отправляться подписчикам этого сервиса. Синхронизация данных будет проходить внутри приложения. 3. У вас будут разные инстансы этого сервиса - один для Родительского компонента, другой для дочернего. Сервисы делают подписку на данные с websocket. При изменении товаров, родительский компонент будет отправлять запрос на api, а backend будет присылать новые данные всем подписчикам по websockets.
Обсуждают сегодня