@ngrx/store-devtools - эффекты вызываются дважды

Все действия, которые я посылаю в эффектах, вызываются дважды. Я уже выяснил, что это вызвано StoreDevtoolsModule, Когда я пну StoreDevtoolsModuleвне app.module.ts мое действие будет вызвано только один раз => все хорошо.

Вот мои настройки:

Angular 6.0.1
"@ngrx/effects": "6.0.0-beta.1",
"@ngrx/entity": "5.2.0",
"@ngrx/router-store": "6.0.0-beta.1",
"@ngrx/store": "6.0.0-beta.1",
"@ngrx/store-devtools": "6.0.0-beta.1",

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { StoreModule, Store, combineReducers, ActionReducerMap, MetaReducer } 
from '@ngrx/store';
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { EffectsModule } from '@ngrx/effects';
import { EquipmentModule } from './modules/equipment/equipment.module';

const reducers: ActionReducerMap<IAppState> = {
    equipments: EquipmentReducer
};

@NgModule({

    declarations: [
        AppComponent
    ],
    imports     : [
        BrowserModule,
        StoreModule.forRoot(reducers),
        StoreDevtoolsModule.instrument({
            name: 'EQUIPMENT',
            maxAge: 10,
            logOnly: true,
          }),
        EquipmentModule,
        EffectsModule.forRoot([]),
    ]
})
export class AppModule
{}

equipment.module.ts

import { EffectsModule } from '@ngrx/effects';
import { EquipmentEffects } from './equipment.effect';
import { EquipmentMockService } from './equipment.mock';

@NgModule({
  imports: [
    EffectsModule.forFeature([EquipmentEffects])
  ],
  providers: [
    {
      provide: 'IEquipmentService',
      useClass: EquipmentMockService
    },
  ]
})
export class EquipmentModule {
 }

equipment.effect.ts

import { CustomAction } from './../../custom.action';
import { Injectable, Inject } from '@angular/core';
import { Http } from '@angular/http';
import { Actions, Effect, ofType } from '@ngrx/effects';
import { Observable } from 'rxjs/Observable';
import { catchError, map, mergeMap } from 'rxjs/operators';
import { EquipmentActions } from './equipment.action';
import { HttpClient } from '@angular/common/http';
import { Action, State } from '@ngrx/store';
import { of } from 'rxjs/internal/observable/of';
import { EquipmentService } from './equipment.service';
import { IAppState } from '../../app.state';
import { ofTypeWithPayload } from '../../customActionHelper';

@Injectable()
export class EquipmentEffects {
  constructor(
    private http: HttpClient,
    private actions$: Actions,
    private readonly state: State<IAppState>,
    @Inject('IEquipmentService')
    private equipmentService: EquipmentService
  ) { }

  @Effect()
  getAllEquipments$: Observable<Action> = this.actions$.pipe(
    ofType(EquipmentActions.LOAD_ALL_EQUIPMENTS),
    mergeMap(action => {
      console.log('here'); <-- This console.log gets called twice!
      return this.equipmentService.getAllEquipments().pipe(
        map(equipments => ({ type: 'LOAD_ALL_EQUIPMENTS_SUCCESS', payload: equipments })),
        catchError(() => of({ type: 'LOAD_ALL_EQUIPMENTS_FAIL' }))
      );
    }

    )
  );

У кого-нибудь есть идея?

Спасибо

0 ответов

Другие вопросы по тегам