在@angular redux/store configureStore 9版本中正确注册epics

在@angular redux/store configureStore 9版本中正确注册epics,redux,angular6,rxjs6,angular-redux,Redux,Angular6,Rxjs6,Angular Redux,我已经将自己的项目从5版本移动到angular 6、@angular redux/store 9。一切都很好,但在中间件中注册史诗的方法并没有奏效。我从中间件中删除了除logger之外的所有epics,并且在执行所有操作的情况下启动都很好。然后我尝试添加一个epic,得到如下错误 TypeError: action$.pipe is not a function at SecurityUserEpics.loadSecurityUser (security-user.epic.ts:31) at

我已经将自己的项目从5版本移动到angular 6、@angular redux/store 9。一切都很好,但在中间件中注册史诗的方法并没有奏效。我从中间件中删除了除logger之外的所有epics,并且在执行所有操作的情况下启动都很好。然后我尝试添加一个epic,得到如下错误

TypeError: action$.pipe is not a function
at SecurityUserEpics.loadSecurityUser (security-user.epic.ts:31)
at combineEpics.js:19
然后,我试图解决这个问题,并搜索了许多有关的示例和文档,但找不到解决方案。在决定在这里提问之后,在为问题准备代码的同时,找到了解决方案。Soo,我在这里发布这个解决方案,希望这能为某人节省时间。 史诗:

}

和最终配置存储:

const epicMiddleware = createEpicMiddleware();
const middleware = [epicMiddleware];
middleware.push(createLogger());
ngRedux.configureStore(combinedReducer, INITIAL_STATE, middleware, storeEnhancers);
const rootEpic = combineEpics(this._securityUserEpics.loadSecurityUser);
// this is new way of middleware registration
epicMiddleware.run(rootEpic);

使用provideStore代替configureStore,例如-

export const combinedEpics = combineEpics(
   pingEpic,
   fetchUserEpic
);

//replace ngRedux.configureStore with:
const epicMiddleware = createEpicMiddleware();

const store = createStore(
  combinedReducer,
  INITIAL_STATE,
  applyMiddleware(createLogger(), epicMiddleware),
);

ngRedux.provideStore(store);
epicMiddleware.run(combinedEpics);
更多有关史诗的信息-

export const combinedEpics = combineEpics(
   pingEpic,
   fetchUserEpic
);

//replace ngRedux.configureStore with:
const epicMiddleware = createEpicMiddleware();

const store = createStore(
  combinedReducer,
  INITIAL_STATE,
  applyMiddleware(createLogger(), epicMiddleware),
);

ngRedux.provideStore(store);
epicMiddleware.run(combinedEpics);