NullInjectorError:没有ReducerManager的提供程序

suk*_*uku 9 angular ngrx-store ngrx-store-4.0

我正在使用新的ngrx 5.这是包含reducers和featureSelector的文件:

import AppState from '../interfaces/app.state'
import { ActionReducerMap, createFeatureSelector } from '@ngrx/store'
import { partnerReducer } from './partner.reducer'

export const reducers: ActionReducerMap<AppState> = {
  partnerState: partnerReducer
}

export const getAppState = createFeatureSelector<AppState>('appState')
Run Code Online (Sandbox Code Playgroud)

这就是我导入storeModule的方式

@NgModule({
declarations: [...],
imports: [...
  RouterModule.forRoot(ROUTES),
  StoreModule.forFeature('appState', reducers)
],
providers: [...],
bootstrap: [AppComponent],
entryComponents: [...]
})

export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

我已经按照教程

当我运行应用程序时,我收到以下错误:

"StaticInjectorError(AppModule)[StoreFeatureModule -> ReducerManager]: 
\n  StaticInjectorError(Platform: core)[StoreFeatureModule -> ReducerManager]: 
\n    NullInjectorError: No provider for ReducerManager!"
Run Code Online (Sandbox Code Playgroud)

但是,如果我在提供程序中提供ReducerManager,我会收到此错误:

No provider for ReducerManagerDispatcher!
Run Code Online (Sandbox Code Playgroud)

suk*_*uku 27

通过添加StoreModule.forRoot({}),导入来解决这个问题.

StoreModule.forRoot只应在项目NgModule的根目录中调用一次.如果您不想注册功能,请使用StoreModule.forFeature.使用forRoot注册Store所需的全局提供程序.

检查GitHub的讨论,在这里这个问题.上述原因在同一讨论中说明


小智 5

我遇到了同样的问题,我找到了这个解决方案

imports: [
       StoreModule.forRoot({}), 
    StoreModule.forFeature('filter-app', filterReducer)
]

Run Code Online (Sandbox Code Playgroud)