如何将@ ngrx / store集成到Angular 5项目中?

问题描述 投票:0回答:2

我正在和@ ngrx / store一起开展Angular 5项目。将ngrx / store集成到我的应用程序中的方法如下。

我有CoreModule,其中包括商店。在商店目录中,有名为search和user的目录,还有reducer.ts和index.ts。

src - app - core - store - user (index, reducer, actions, selectors)
                         - search (index, reducer, actions, selectors)
                         - reducers.ts
                         - index.ts

reducers.ts

export interface AppState {
    search: Search;
    user: User;
}

export let AppReducers: ActionReducerMap<AppState> = {
    search: searchReducer,
    user: userReducer
};

export let AppActions = [SearchActions,UserActions];

index.ts

@NgModule({
  imports: [
    StoreModule.forRoot('AppReducers')
  ],
  providers: [],
  declarations: [],
  exports: []
})

export class CoreStoreModule {};

为了将CoreStoreModule集成到根模块中,我遵循这种方式。

在核心目录下的index.ts中

@NgModule({
  imports: [
    CoreStoreModule,
  ],
  declarations: [
  ],
  exports: [
    CoreStoreModule,
  ],
  providers: [
    ...APP_SERVICES,
  ]
})
export class CoreModule {

}

和根模块的app.module.ts

@NgModule({
  imports: [
    BrowserModule,
    HttpModule,
    FormsModule,
    CoreModule,
    RouterModule.forRoot(routes, {useHash: true})
  ],
  declarations: [
    AppComponent
  ],
  bootstrap: [AppComponent],
  providers: []
})
export class AppModule {
}

platformBrowserDynamic().bootstrapModule(AppModule);

编译时我没有遇到任何错误但是reducer永远不会工作,调度动作时没有任何反应。我正在使用的库是

"@ngrx/core": "^1.2.0",
"@ngrx/store": "^5.1.0",
"@angular/core": "^5.2.0",

没有很多文档可以提供有关如何使用ngrx / store 5的信息..有人可以提供一些有关它的信息吗?我如何将@ ngrx / store集成到Angular 5项目中?

angular ngrx-store-4.0
2个回答
1
投票

您在此处提供字符串而不是实际变量:

StoreModule.forRoot('AppReducers')

改成:

StoreModule.forRoot(AppReducers)

或者,如果这不起作用,这可能:

StoreModule.forRoot({
  search: searchReducer,
  user: userReducer
})

0
投票

如果您将核心模块商店注册为功能模块该怎么办:qazxsw poi

并在您的app模块中注册一个空商店:

StoreModule.forFeature('core', reducers),
© www.soinside.com 2019 - 2024. All rights reserved.