NgRx 在功能模块之间共享数据切片

问题描述 投票:0回答:1

我是 NgRx 的新手,我对如何在 Store 中构建状态有一些疑问。

我们正在 Angular 中构建内部 CRM 来管理客户信息。现在,我们正在使用具有主题模式的服务来处理状态。以下是我们应用程序结构的概述:

App
├── Business
│   ├── Business details
│   ├── Business notes
│   ├── Business appointments
│   └── Business sales
├── Notes
├── Appointments
└── Sales

当用户导航到“注释”时,他们应该会看到 CRM 中的所有注释。但是,当他们导航到“Business/1/Notes”时,他们应该只能看到与 Business ID 1 关联的注释。

问题在于“业务”功能中的状态与其他功能不共享。例如,当用户导航到“Business/1/Notes”时,应用程序会从服务器获取约会数据,即使它已存在于“Notes”功能中。

这不是一个最优的解决方案,也是我们想要实现 NgRx 的原因之一。理想情况下,当用户导航到“Business/1/Notes”或“Notes”时,它应该从“Notes”功能切片(如果存在)获取必要的数据,并根据选择器创建视图模型。

我的问题是:我应该如何构建状态以允许多个模块修改同一状态切片并在多个组件中从该切片创建视图模型?

angular structure ngrx ngrx-store state-management
1个回答
0
投票

我想你已经回答了这个问题。

您可以将注释存储到其自己的 NgRx 功能(状态切片)中。存储的笔记应该只是一个笔记实体。您还可以查看@ngrx/entity来管理实体切片。

两个模块(笔记和业务)都可以使用选择器访问笔记状态。 注释功能应该有一些简单的选择器来公开状态。 模块的选择器重用注释选择器来构建视图模型。

要获取数据,您将拥有一个注释效果,该效果侦听从注释和业务模块分派的操作。在此效果中,您将读取注释状态以检查是否需要获取它。

© www.soinside.com 2019 - 2024. All rights reserved.