如何使用 Ngrx 创建嵌套状态结构?

Man*_*noj 6 redux ngrx angular

我正在使用 Ngrx 构建 Angular 5 应用程序以进行状态管理。

我正在尝试在状态树下构建,其中“管理”是功能,库是管理功能的一部分。在库内部,我们可以有多个库,每个库都有自己的状态。

首先,我的以下状态在标准化方面是正确的。我试图建立状态,因为我有我的应用程序结构。所以,我认为以同样的方式也很容易看到状态树。

现在我为每个库创建了减速器。而且,如果我创建 LibraryReducer Map,我可以指向每个库缩减器。但是,当我构建管理减速器映射时,我无法构建它,因为它需要库具有减速器功能(ActionReducerMap)。我想过将这个库reducer Map传递给AdminReducer,但它不接受。

你知道如何处理这个嵌套的状态结构吗?如果我尝试构建的状态树是正确的,如何解决我在 ngrx 中遇到的错误?

状态树:

{
    UIState: {
        ..
    },
    AdminState: {
        LibraryState: {
            Library1: {},
            Library2: {}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

库.reducer.ts

LibraryState{
    library1: Library1State,
    library2: Library2State,
}

reducer: ActionReducerMap<LibraryState> = {
    library1: library1Reducer;
    library2: library2Reducer;
}
Run Code Online (Sandbox Code Playgroud)

管理.reducer.ts

AdminState {
    library: LibraryState
}

reducer: ActionReducerMap<AdminState> = {
    library: libraryReducers; // This is error. As ActionReducerMap expects only reducer function not reducer map.
}
Run Code Online (Sandbox Code Playgroud)