组件是否应该从Angular服务编辑对象的副本?

时间:2018-06-02 16:09:32

标签: angular angular-services angular-components

我正在尝试创建一个基本的事务跟踪应用程序,并提供跟踪事务的服务。我有一个持有事务的BehaviorSubject,当一个组件请求事务时,它们被赋予了一个可观察到的行为主体。

我现在正在努力使组件可以编辑事务并让服务在发生编辑时将更改同步回服务器。解决这个问题的最佳方法是什么?我是否以某种方式锁定了行为主题所持有的值并要求编辑通过setter传递?我是否只将交易副本传递给组件?如果没有“告诉”服务,我是否相信组件不进行编辑?

我现在所做的是让组件能够每10秒编辑一次事务和服务检查,以查看事务列表是否与原始同步版本不同,然后将差异发送到服务器。这似乎不对。

3 个答案:

答案 0 :(得分:3)

我实际上并不认为只要这些话题出现,人们就应该直接跳到Redux

无论您想要实施什么,您仍然可以在当前的服务中实现。您应该做的是仅通过您的服务锁定编辑。并让您的组件收听您的服务发布的BehaviorSubject

您无法直接在组件中更改记录,因为您到达那里的副本应该是只读副本。这基本上是Redux要求您做的事情,区别在于Redux并不要求您拥有额外的服务层。

答案 1 :(得分:1)

看一下我开始工作的名为RxCache的库。我写这篇文章是为了回应我不喜欢当前Redux商店风格的方法,它正在感染我们美丽的Angular世界。它为您提供了推送数据方法,没有任何荒谬的样板和ngrx的开销。

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

答案 2 :(得分:0)

我建议你使用像ngrx这样的状态管理工具。使用商店和效果。它将使您了解状态如何变化以及何时可以通过效果进行服务呼叫。

另请查看此文章for state management in angular。你也可以在google上做一些调查结果。

你会遇到ngrx(redux + rxjs)和redux作为管理角度状态的最常用工具。