NullInjectorError: No provider for ReducerManager

2019-06-18 15:07发布

I am using the new ngrx 5. This is the file that holds the reducers and the 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')

This is how I am importing the storeModule

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

export class AppModule { }

I have followed this tutorial

When I run the app, I get the following error:

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

But if I do provide ReducerManager in the providers, I get this error:

No provider for ReducerManagerDispatcher!

1条回答
我想做一个坏孩纸
2楼-- · 2019-06-18 16:10

Managed to solve this by adding StoreModule.forRoot({}), in the imports.

StoreModule.forRoot should only be called once in the root of your project NgModule. If you wan't to register a feature, use StoreModule.forFeature. Using forRoot registers the global providers needed for Store.

Check the github discussion here on this issue. The above reason was stated in the same discussion

查看更多
登录 后发表回答