NGRX 相互嵌套多个功能模块?

NGRX nesting multiple feature modules inside each other?

目前我使用的商店是功能模块的扁平结构,即:

{
    feature_A: {
       A:'A',
       B:'B'
    },
    feature_B:{
        C:'C',
        D:'D'
    }
}

但我想做的是:

{
    feature_A: {
       A:'A',
       B:'B',
       feature_B:{
        C:'C',
        D:'D'
      }
    }
}

也许是这样的: App.Module

StoreModule.forFeature('feature_A', fromFeature_A.feature_A_Reducers)
StoreModule.forFeature('feature_A.feature_B', fromFeature_B.feature_B_Reducers)

在网上搜索此问题的答案时并没有真正找到真正的答案,只是建议它保持功能模块的平面结构。

ngrx 中的功能模块只是对象根的直接状态,因此实际上并没有嵌套功能模块的概念。

相反,您可以通过仍然将功能 B 的状态抽象到不同的文件(reducer、动作、效果...)中来完成类似的行为,但将其视为功能 A 的子状态。

然后您可以创建一个选择器来专门访问功能 B 的状态:

const selectFeatureA = createFeatureSelector('feature_A');
const selectFeatureB = createSelector(selectFeatureA, (state) => state.feature_B);