web-dev-qa-db-fra.com

NullInjectorError: aucun fournisseur pour ReducerManager

J'utilise le nouveau ngrx 5. C'est le fichier qui contient les réducteurs et le 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')

Voici comment j'importe le storeModule

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

export class AppModule { }

J'ai suivi this tutoriel

Lorsque j'exécute l'application, j'obtiens l'erreur suivante:

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

Mais si je fournis ReducerManager dans les fournisseurs, j'obtiens cette erreur:

No provider for ReducerManagerDispatcher!
9
suku

Géré pour résoudre ce problème en ajoutant StoreModule.forRoot({}), dans les importations.

StoreModule.forRoot ne doit être appelé qu'une seule fois à la racine de votre projet NgModule. Si vous ne souhaitez pas enregistrer une fonctionnalité, utilisez StoreModule.forFeature. L'utilisation de forRoot enregistre les fournisseurs globaux nécessaires pour Store.

Consultez la discussion github ici sur cette question. La raison ci-dessus a été indiquée dans la même discussion

24
suku