Как в ангуляре при изменении данных в localstorage рендерить измененную информацию?
Всем привет. Пишу SPA приложение, как можно организовать обновление страницы при изменении информации в localStorage.
В html есть форма и кнопка, при нажатии на кнопку отправляется строка из формы в функцию компонента, как можно подписаться на эту функцию, чтобы при ее изменении рендерилась только та часть страницы, которая является новой.
Как это можно сделать?
Kovalsky,
Есть кнопка:
При ее нажатии вызывается функция из следующего класса:
В функции генерируется событие, которое передается дальше по верстке:
Событие в виде строки приходит в функцию компонента:
Где вызывается функция сервиса (можно сказать контроллера), которая работает с LocalStorage:
Вопрос заключается в том, что нужно сделать, чтобы при нажатии на кнопку, страничка рендерила только ту часть, которая является новой. На данный момент данные просто кладутся в хранилище и появляются, когда страницу обновляют. (пробовал в коде дописать функцию которая сама обновляет страницу, но так не должно быть, это же SPA приложение)
Kovalsky, в этом нет проблемы, как организовать ререндеринг той части страницы, которая является новой (то есть мы написали комментарий, и нужно отобразить его, не перезагружая всей страницы). Это нужно делать с помощью подписки на событие?
egorggegor, ну в смысле как) У вас же angular, у вас данные обновляются в обе стороны: меняете данные в модели - меняется их отображение во view, меняете во view нужные вам данные - они меняются в модели. Это одна из основных функций ng и других фреймворков. Если у вас есть массив comments который вы отображете в шаблоне, то чтобы перерендерить часть страницы с комментариями достаточно обновить массив comments - что-то из него удалить или добавить. То есть вам сейчас достаточно newComment положить в массив комментариев которые рендерятся на странице, и он сразу же отобразится. Если у вас работает как-то по-другому, то стоит это указать в тексте вопроса и приложить код шаблона и соответствующего компонента,
Достаточно просто складывать комментарии в массив и выводить этот массив в шаблоне, тогда для отображения новых комментариев нужно будет сложить их в этот массив
Я бы написал сервис-фасад, через который будет идти запись в localstorage, так же с помощью RxJs сделал подписку на событие записи в localstorage, передавая ключ, а уже в подписчике в контроллере проверять нужные ключи и если надо, то выставлять новые значения полям.