Должен ли компонент редактировать копию объекта из службы Angular? - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь создать базовое приложение для отслеживания транзакций, и у меня есть служба, которая отслеживает транзакции.У меня есть BehaviorSubject, который содержит транзакции, и когда компонент запрашивает транзакции, им присваивается наблюдаемый объект поведения.

Я сейчас пытаюсь сделать так, чтобы компонент мог редактировать транзакцию и иметь службусинхронизировать изменения обратно на сервер, когда происходит редактирование.Каков наилучший способ приблизиться к этому?Должен ли я каким-то образом заблокировать значения, содержащиеся в объекте поведения, и требовать, чтобы изменения передавались через сеттеры?Могу ли я передавать копии транзакций только компонентам?Доверяю ли я компонентам, чтобы они не вносили изменения без «уведомления» службы?

Что я делаю сейчас, так это то, что у меня есть компоненты, которые могут редактировать транзакции, и служба каждые 10 секунд проверяет, есть ли список транзакций.отличается от оригинальной синхронизированной версии и затем отправляет различия на сервер.Это кажется неправильным.

Ответы [ 3 ]

0 голосов
/ 02 июня 2018

Я на самом деле не думаю, что люди должны сразу переходить к Redux, когда появляются эти темы.

Что бы вы ни хотели реализовать, вы все равно можете осуществить это в своем текущем сервисе.Что вы должны сделать, это заблокировать изменения только через ваш сервис.И сделайте так, чтобы ваш компонент слушал вашу BehaviorSubject, опубликованную вашей службой.

Вы не можете изменить запись непосредственно в своем компоненте, потому что полученная там копия должна быть только для чтения.По сути, это то, что Redux хочет от вас, разница в том, что Redux не требует от вас дополнительного уровня обслуживания.

0 голосов
/ 09 июня 2018

Взгляните на библиотеку, над которой я начал работать, под названием RxCache.Я написал это в ответ на мою неприязнь к нынешнему подходу стиля магазина Redux, который заражает наш прекрасный мир Angular.Это дает вам подход к передаче данных без каких-либо нелепых шаблонов и накладных расходов ngrx.

https://github.com/adriandavidbrand/ngx-rxcache

0 голосов
/ 02 июня 2018

Я предлагаю вам использовать инструмент управления состоянием, например ngrx .Используйте магазин и эффекты.Это позволит вам понять, как меняется ваше состояние и когда вы можете сделать сервисный вызов с помощью эффектов.

Также обратитесь к этой статье для управления состоянием в угловых .Вы также можете сделать некоторые выводы о google .

. Вы встретите ngrx (redux + rxjs) и redux как наиболее распространенные инструменты, используемые для управления состоянием в angular.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...