在Redux Epic Angular JS中注射服务



我正在使用" redux-observable"用于gangularjs v1.6中的redux能力。以下代码用于Epic

export const getAllBidsAPI : any = (action$: ActionsObservable<any>, store: any, { customerService = CustomerService }) =>
      action$.ofType(GET_ALL_BID)
        .mergeMap((action : any) =>
          Observable.fromPromise(customerService.getCustomers())
            .map((res: any) => ({type : GET_ALL_BID_SUCCESS , payload : res.data.bid}))
        );

在这里 customerservice尚未确认。我猜,它没有注入。

const rootEpic = combineEpics(
  getAllBidsAPI
);
const rootReducer = combineReducers({
  bidReducer
});
const epicMiddleware = createEpicMiddleware(rootEpic, {
    dependencies : {CustomerService} 
});
export const store = createStore(
    rootReducer,
    applyMiddleware(epicMiddleware)
);

这是我们将CustomerService作为Epic的依赖性添加的地方。但是,我会出错。

无法读取未定义的

的属性'getcustomers'

依赖性为redux-observable中 undefined的最常见原因是它实际上是作为 undefined;通常是因为导入/要求不正确。仔细检查您是否正确导入CustomerService,并在文件中暂停调试器,然后将其传递给createEpicMiddleware以确认它是(或不是)undefined

我看到的另一件事是他们正在使用尚未支持依赖注入的旧版本的Redux-Observable。但是,我非常有信心这是上面的第一个建议,因为Redux-Observable默认情况下,Redux-Observable不会为您的Epic 提供第三个参数。因此,就您而言,如果要归咎于Redux-Observable,您实际上会得到Cannot read property 'customerService' of undefined,因为第三个参数是什么,而是您提供的对象。

最新更新