Ngxs-呼叫Angular服务:良好做法?

时间:2018-10-19 13:47:32

标签: angular redux ngxs

当我使用ngxs时,我的应用应该做什么:

  • 我的组件调用服务,并且该服务使用以下命令调度操作 结果作为有效载荷?
  • 我的组件调度一个动作,而我的 国家打电话给该服务?

3 个答案:

答案 0 :(得分:3)

您可以两者兼而有之,如果您研究开源应用程序,则可能会找到两者。

到目前为止,我个人(使用ngrx,但还是一样)注入了商店并从(智能)组件中分发了动作。

但是最近我已经阅读了许多有关const item = document.createElement('div'); item.classList.add('item'); const content = document.createElement('div'); content.classList.add('content'); item.appendChild(content); 的文章,我认为这实际上是正确的方法,可以使您的组件尽可能地简单,尤其是也可以简化测试。

您可以在此处了解有关外墙的更多信息:
https://medium.com/@thomasburleson_11450/ngrx-facades-better-state-management-82a04b9a1e39

https://medium.com/default-to-open/understanding-a-large-scale-angular-app-with-ngrx-80f9fc5660cc

https://blog.nrwl.io/nrwl-nx-6-2-angular-6-1-and-better-state-management-e139da2cd074

答案 1 :(得分:0)

如前所述,您可以选择执行任何一种操作-这是我之前发布的question,其中包含一个NGXS团队的回复。

在我们的项目中,我们遵循了这种模式,调度一个动作,让状态的动作处理程序调用服务,然后用结果对状态进行修补。并在需要时调度进一步的操作以指示成功或失败。

答案 2 :(得分:0)

我的观点是,分派操作本身应该是不可变的,并且不能用于返回结果。取而代之的是,有兴趣知道结果的客户端(通常是操作导致的状态更改)应该订阅状态更改。请注意,NGXS是CQRS实现。