javascript - 如何从子模块访问 angular-redux 存储?

标签 javascript angular angular-module angular-redux

在我的 Angular 应用程序中,我使用 angular-redux 进行应用程序状态管理。在我的主模块中,我定义了我的 redux 商店。像这样:

export class MainModule {
  constructor(private ngRedux: NgRedux<MainAppState>,
              private devTools: DevToolsExtension) {
    let enhancers = [];

    if (environment.production === false && devTools.isEnabled()) {
      enhancers = [...enhancers, devTools.enhancer()];
    }

    this.ngRedux.configureStore(
      reducer,
      {} as MainAppState,
      [],
      enhancers);
  }
}

我创建了新的子模块,其中包含一些组件。这些组件应该访问应用程序状态。在这些组件之一中,我通过 @select 访问以存储,但这不起作用。这是我访问商店的方式:

export function getLanguage(state: LanguageState) { return state.userLanguage; }

我的 ChildComponent 类中的这段代码:

export class ChildComponent implements OnInit {

  @select(getLanguage) savedUserLanguage$: Observable<LanguageState>;

  // more code

}

如何从子模块访问应用程序状态存储?我应该在子模块中导入什么?只为 redux 存储处理创建自己的模块会更好吗?也许我忘记了什么?

我使用 Angular v4 和 @angular-redux/store v6。

最佳答案

我建议创建一个仅包含您的商店的单独模块,例如存储模块。然后,您可以将 StoreModule 导入所有子模块并从那里访问您的商店。 这是他们在官方示例应用程序中的方式:

存储模块: https://github.com/angular-redux/example-app/blob/master/src/app/store/module.ts

子模块: https://github.com/angular-redux/example-app/blob/master/src/app/elephants/module.ts

子模块中的组件: https://github.com/angular-redux/example-app/blob/master/src/app/elephants/page.ts

关于javascript - 如何从子模块访问 angular-redux 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47569186/

相关文章:

javascript - 我该如何给飞船加速?

javascript - 按单个按钮播放随机声音

javascript - 如何检测重叠元素下的点击?

javascript - 在 Angular 2 中调用函数时在 HTML 中创建一个 div

angular - Angular2 中嵌套列表的分页

angular - 无法读取未定义的属性 'toString'

angular - 何时使用 Angular 指令、组件和模块

javascript - 如何在特定条件下排除 map 中的特定项目?

即使我声明导出,Angular <component> 也不是模块的已知元素

Angular 4 延迟加载和路由不起作用