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