正确注册@ angular-redux / store configure中的史诗版本9版本

时间:2018-07-23 12:01:08

标签: redux angular6 rxjs6 angular-redux

我已经将自己的项目从5版本移到了angular 6,@ angular-redux / store 9。一切都很好,但是在中间件中注册史诗的方法不起作用。我从中间件中删除了所有的史诗,除了记录器和启动都可以执行的所有动作。然后我尝试添加一个史诗,并得到类似

的错误
TypeError: action$.pipe is not a function
at SecurityUserEpics.loadSecurityUser (security-user.epic.ts:31)
at combineEpics.js:19

然后,我尝试解决此问题并搜索许多有关的示例和文档,但找不到解决方案。在决定在这里提出问题并准备问题代码后,找到了解决方案。太好了,我在这里发布该解决方案,希望这可以为某人节省时间。 史诗:

loadSecurityUser = (action$) => {
  debugger;
  // here i have object of type : {getState: ƒ, dispatch: ƒ} and thats was pain from older version. pipe helps!
  return action$.pipe(
     ofType(SecurityUserActions.LoadSecurityUsers),
     switchMap(q => this._dataSrv.getUserInfo()
        .pipe(map(data => {
           localStorage.setItem('isNeedRelogin', '0');
           return this._securityUserActions.loadSecurityUserComplete(data);
        }))));

}

最后的配置存储区:

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);

1 个答案:

答案 0 :(得分:0)

例如,使用ProvideStore而不是configureStore-

user

有关史诗的更多信息-https://redux-observable.js.org/docs/basics/Epics.html