Lors de la migration de mon projet de @ngrx 2.x vers 4.1.0, j'ai rencontré le message d'erreur
NullInjectorError: aucun fournisseur pour Store!
Le magasin a été importé comme indiqué dans le docs :
import { StoreModule as NgRxStoreModule } from '@ngrx/store';
@NgModule({
imports: [
NgRxStoreModule.forRoot(reducerMap, {
initialState: initial
}),
StoreRouterConnectingModule,
EffectsModule.forRoot(effects)
],
providers: [AppActions]
})
export class StoreModule {}
Il s'est avéré que certains de mes services ont importé le magasin via
import { Store } from '@ngrx/store/src/store'
Modification des importations en
import { Store } from '@ngrx/store'
résolu le problème.
Je l'ai obtenu alors que j'essayais d'exécuter des tests dans angular 7.
La solution pour moi était de:
describe
:let storeMock;
beforeEach
: beforeEach(async () => {
storeMock = {
dispatch: jasmine.createSpy("dispatch"),
pipe: jasmine.createSpy("pipe").and.returnValue(from([{
...
requestTimeout: 5000,
...
}]))
};
TestBed.configureTestingModule
: TestBed.configureTestingModule({
imports: [
HttpClientTestingModule,
],
providers: [
...
{
provide: Store,
useValue: storeMock
}
...
]
});
```
Pour l'utilisation de ngrx 8:
import { provideMockStore } from '@ngrx/store/testing';