Ngxs - 调用 Angular 服务:好的做法?

Posted

技术标签:

【中文标题】Ngxs - 调用 Angular 服务:好的做法?【英文标题】:Ngxs - Call an Angular service : good practices? 【发布时间】:2019-03-24 10:09:15 【问题描述】:

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

我的组件调用一个服务,该服务用 结果作为有效载荷? 我的组件调度一个动作,我的 状态调用服务?

【问题讨论】:

【参考方案1】:

我的观点是 Dispatched Action 本身应该是不可变的,并且不能用于返回结果。相反,有兴趣知道结果的客户端(通常是由 Action 引起的状态更改)应该订阅状态更改。请注意,NGXS 是一种 CQRS 实现。

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

你可以两者兼得,如果你研究开源应用程序,你可能会发现两者。

到目前为止,我已经亲自(使用 ngrx,但它是相同的)注入存储并从(智能)组件调度操作。

但我最近阅读了很多关于 facades 的文章,我认为这实际上是正确的方法,以使您的组件尽可能简单,尤其是简化测试。

您可以在此处阅读有关外墙的更多信息: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

【讨论】:

以上是关于Ngxs - 调用 Angular 服务:好的做法?的主要内容,如果未能解决你的问题,请参考以下文章

NGXS <-> Angular: 2-Way 绑定

是否可以在单独的 Angular(子)项目之间共享 NGXS 存储?

在 Angular NGXS 中对匹配的 URL 运行函数

NGXS 错误:无法解析 TranslationEditorState 的所有参数:(?)

如何在 HttpInterceptor 中使用 NGXS 存储中的值?

混合 Angular Material 和 Bootstrap。好的做法还是坏的做法?