在我的角应用程序中,我使用角-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存储处理创建自己的模块会更好吗?也许我忘了什么?
我使用角v4和@角-redux/存储v6。
发布于 2017-11-30 09:33:15
我建议创建一个单独的模块,它只包含您的商店,例如StoreModule。然后,您可以将您的StoreModule导入所有子模块,并从那里访问您的商店。这就是他们在官方示例应用程序中的做法:
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
发布于 2019-08-19 16:13:23
我正在考虑将一些使用原型继承的丑陋的旧JavaScript代码重构到一个7+项目中。我也在问自己同样的问题。受我的udemy角度课程的启发,我尝试了一个ngrx存储和惰性加载模块的实验。
(请记住,ngrx与“角-redux”类似,但这不是一回事。请参阅https://ngrx.io/docs获取详细信息。)
就是这里。
我用StoreModule.forRoot在主模块中创建存储,在每个延迟加载的模块中,用StoreModule.forFeature创建对存储的引用。
(详见https://ngrx.io/api/store/StoreModule。)
当我使用延迟加载的组件在商店上分派操作时,这些操作(以及相应的还原器)似乎改变了主应用程序组件订阅的值。
此外,当我使用主应用程序组件在商店上分派操作时,这些操作(以及相应的减法器)似乎改变了延迟加载组件订阅的值。
而且,很难解释我在一个简单的200-500字符块中做了什么,所以我不得不使用一个github项目。
https://stackoverflow.com/questions/47569186
复制相似问题