按照惰性模块结构,使用NgRx存储创建嵌套切片

时间:2018-10-05 12:32:02

标签: angular ngrx ngrx-store-4.0

我是NgRx的新手。 在我的项目中,我们有3个级别的惰性模块。我希望存储的状态根据模块层次结构进行嵌套,但是在编写时:storeModule.forFeature('child',reducer) 我得到的是扁平状态,而不是层次结构状态。

例如,如果我有父模块和子模块。我将在父模块storeModule.forFeature('father',reducer)上进行定义 并在子模块storeModure.forFeature('child',reducer)

状态的结果将不是

{ father { child {}}}

相反,它将是:

{ father {}, child {}}

是否有一种方法可以像惰性模块一样使状态分层?

1 个答案:

答案 0 :(得分:0)

您实际上可以具有延迟加载的状态片。假设您具有以下模块配置

app
  father
    child

并且您希望(如前所述)具有以下状态

{
  father: {
    child: {}
  }
}

您需要确保:

  • 您在AppModule中有一个路由器,在FatherModule中有一个路由器。
  • 您将FatherModule延迟加载到AppModules路由器中(!)。
  • 您将ChildModule延迟加载到FatherModules路由器中(!)。
  • 导入中的配置正确:在ChildModuleStoreModule.forFeature('child', childreducers)FatherModuleStoreModule.forFeature('father', fatherreducers)中。

例如,如果您导航到FatherModule中的某个组件,它将加载father功能。但不一定是child功能。仅当您导航到某个加载ChildModule的子路由时。

您当前要做的是在同一个模块中同时使用两个forFeature方法。这没有任何意义,因为“功能”与模块直接相关。