首页 > 解决方案 > ngrx:跨多个功能模块创建可重用的操作

问题描述

我有一个包含几个功能模块的 Angular 5 应用程序。每个模块负责特定页面的资产并且是延迟加载的。

src/
|--app/
   |--core/ <-- core functionality here
   |--landing/
   |--store/
   |--about-us/

对于每个模块,我都有顶级页面组件,它们连接到商店并以非常相似的方式跨页面获取数据。

登陆组件.ts

this.store.pipe(select(getDataForThisPage));
...
this.store.dispatch(new PageAction.FetchData());

因此,每个页面组件都从后端获取数据并将其放入自己的特征存储中。

这里的问题是 a) 动作、b) 效果甚至 reducer 存储形状对于所有功能模块都非常相似。所以理想情况下,我想至少重用动作,但如果它也是可能的效果/存储的话。

最好的方法是什么?

标签: angularangular5ngrx

解决方案


看看@ngrx/entity

如果你想自己做类似的事情,你可以定义一个接口,定义你如何在你的状态下存储数据。您可以使用泛型参数来确保实际“实体”的类型安全。您可以创建将实体名称作为输入的辅助函数,然后创建操作和减速器,其中操作以您的实体名称为前缀。

但在自己尝试之前,我会先试一试@ngrx/entity,这样你就可以了解什么是可能的。


推荐阅读