web-dev-qa-db-ja.com

エラー:ストアのプロバイダーがありません! @ngrx 4.x

プロジェクトを@ngrx 2.xから4.1.0に移行すると、エラーメッセージが表示されました

NullInjectorError:ストアのプロバイダーがありません!

ストアは docs に示すようにインポートされました:

import { StoreModule as NgRxStoreModule } from '@ngrx/store';

@NgModule({
  imports: [
    NgRxStoreModule.forRoot(reducerMap, {
      initialState: initial
    }),
    StoreRouterConnectingModule,
    EffectsModule.forRoot(effects)
  ],
  providers: [AppActions]
})
export class StoreModule {}
9

私のサービスのいくつかが経由でストアをインポートしたことが判明

import { Store } from '@ngrx/store/src/store'

インポートを

import { Store } from '@ngrx/store'

問題を修正しました。

10

angular 7。

私の解決策は:

  1. describeの本文にストアモックを定義します。
let storeMock;
  1. beforeEachセクションで初期化します。
  beforeEach(async () => {
    storeMock = {
      dispatch: jasmine.createSpy("dispatch"),
      pipe: jasmine.createSpy("pipe").and.returnValue(from([{
...
        requestTimeout: 5000,
...
      }]))
    };
  1. storeのプロバイダーをTestBed.configureTestingModuleに定義します。
    TestBed.configureTestingModule({
      imports: [
        HttpClientTestingModule,
      ],
      providers: [
        ...
        {
          provide: Store,
          useValue: storeMock
        }
        ...
      ]
    });
    ```
0
uthomas

Ngrx 8の場合:

import { provideMockStore } from '@ngrx/store/testing';
0
Gal Margalit