延迟加载的要素可以通过Angular 6中的ngrx在要素之间传递状态吗?

时间:2018-08-02 20:54:49

标签: javascript angular lazy-loading ngrx

如果我有一个使用延迟加载的应用程序,并且还使用 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可以做到这一点吗?

谢谢。

1 个答案:

答案 0 :(得分:5)

ngrx会将延迟加载的模块的新状态与当前状态合并,并且只有当您导航到延迟加载的模块的路由之一时才会发生,因此,如果未加载产品功能,则将无法访问它的商店。

我建议在客户功能中移动所需的零件,或者您可以为此创建共享模块