我有两个角度模块:main和feature:
主/根模块:
@NgModule({
imports: [
StoreModule.forRoot({router: routerReducer}),
EffectsModule.forRoot([...]),
...
],
declarations: [],
...
})
export class AppModule {}
功能模块:
@NgModule({
imports: [
StoreModule.forFeature('feature', {someValue: someValueReducer}),
EffectsModule.forFeature([...]),
...
],
declarations: [],
...
})
export class FeatureModule {}
我需要访问主模块中的“功能”数据片段,以根据存储在feature
模块中的数据有条件地显示/激活应用程序选项卡。
(换句话说,我需要所有模块main和任何功能模块都可以访问的全局/共享状态。)
- 有可能这样做吗?
- 它被认为是好的做法吗?
目前我不能这样做,因为feature
main 中没有状态AppState
:
export interface AppState {
router: RouterReducerState<RouterStateUrl>;
}
并且 typescript 指示错误this.store.select('feature')
,因为没有feature
main store 的键AppState
。
使用selector
:this.store.select(selectFeatureValue)
我收到运行时错误:
export const selectFeatureModule = createFeatureSelector<FeatureState>('feature');
export const selectFeatureValue = createSelector(selectFeatureModule ,
(state: FeatureState) => state.someValue);
我在主 AppComponent 中遇到错误:
TypeError:无法读取未定义的属性“someValue”