(nx) 特征库可以访问全局状态吗?

时间:2021-07-07 14:12:14

标签: ngrx nrwl-nx

根据 Nx Docs,应用程序的功能仍应移入库中。当然,我可以向这些库中的每一个添加功能级别的状态,但是如果我想从功能库访问全局 AppState 上的属性怎么办?我无法从 apps/ 目录导入任何内容。

有没有办法与功能库共享状态,或者我应该将我的功能移回 apps/ 目录?

2 个答案:

答案 0 :(得分:0)

问题是有功能减速器和选择器。

但是,重要的是要了解没有功能商店

只有一个全局存储,它具有所有减速器的状态。 因此,功能reducer 和选择器与全局存储和全局状态一起工作,并且可以完全访问它。

例如,如果两个不同的模块调用 StoreModule.forFeature('test', testReducer) - 两个模块共享状态,尽管它可能给人的印象是每个模块都有自己的 test 功能状态。

答案 1 :(得分:0)

我的解决方法是避免全局存储状态。相反,我创建了一个专用的无组件模块,定义了 forFeature() 状态、选择器、reducers、效果等。然后我使用 forRoot() 从专用模块导出所有这些。

现在我可以将这个专用的功能状态模块导入到独立的应用程序功能模块中。正如@satanTime 指出的那样,此状态不会被复制或替换,因为它是通过 forFeature() 添加到全局状态的。