如果我有一个使用延迟加载的应用程序,并且还使用 ngrx 来管理状态,则每个功能部件都有一个状态实例,并带有其自己的reducer,actions,等等。例如:
product-feature
product-edit
product-add
product-admin
state
product.reducer.ts
product.actions.ts
product.effects.ts
product.index.ts
customer-feature
customer-edit
customer-add
customer-admin
state
customer.reducer.ts
customer.actions.ts
customer.effects.ts
customer.index.ts
使用这种结构,我的主要问题是product-feature
之间的状态是否可以通信和使用customer-feature
之间的状态?如果我作为用户进入customer-feature
,但是customer-feature
需要来自product-feature
的一些状态信息,即使product-feature
仍会呈现并获取数据从来没有创建过,因为用户没有(通过延迟加载)去了?
我在网上看到的大多数示例都将ngrx视为AppState
,并且不进行延迟加载,而在惰性加载示例中,组件之间的通信是父/子。我读过的一些文章说,您需要扩展应用程序状态以包括功能状态,因为无法在应用程序状态中引用功能状态。我想知道的实例正在兄弟功能之间传递状态。通过延迟加载使用ngrx可以做到这一点吗?
谢谢。
答案 0 :(得分:5)
ngrx会将延迟加载的模块的新状态与当前状态合并,并且只有当您导航到延迟加载的模块的路由之一时才会发生,因此,如果未加载产品功能,则将无法访问它的商店。
我建议在客户功能中移动所需的零件,或者您可以为此创建共享模块