0

J'utilise "redux-observable" pour les capacités Redux dans AngularJS v1.6. code suivant est une épopéeServices d'injection dans Redux Epic Angular JS

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

Ici CustomerService n'est pas reconnu. Je suppose que ce n'est pas injecté.

const rootEpic = combineEpics(
    getAllBidsAPI 
); 

const rootReducer = combineReducers({ 
    bidReducer 
}); 

const epicMiddleware = createEpicMiddleware(rootEpic, { 
    dependencies : {CustomerService} 
}); 

export const store = createStore(
    rootReducer, 
    applyMiddleware(epicMiddleware) 
); 

C'est ici que nous ajoutons CustomerService en tant que dépendance dans Epic. Mais, j'ai une erreur.

Impossible de lire la propriété « getCustomers » undefined

+0

comment résolvez-vous cette dépendance? – Hitmands

+0

@Hitmands que signifie exactement en résolvant la dépendance? –

+1

AngularJS (1. *) possède l'objet '$ injector', ce qui signifie que vous devez enregistrer les dépendances et les utiliser uniquement lorsque cela est autorisé par le framework (composants internes, services, contrôleurs, etc ...). Alors, comment résolvez-vous les minuscules 'customerService'? vous avez fait: 'dependencies: {CustomerService}' en majuscules ... – Hitmands

Répondre

0

La raison la plus courante pour une dépendance à être undefined Redux observable est qu'il est effectivement fourni undefined; généralement parce que l'import/require est incorrect. Vérifiez que vous importez correctement CustomerService, et mettez votre débogueur en pause dans le fichier où vous le passez à createEpicMiddleware pour confirmer qu'il est (ou n'est pas) undefined.

L'autre chose que j'ai vu est qu'ils utilisaient une ancienne version de redux-observable qui ne supportait pas encore l'injection de dépendance. Cependant Je suis assez confiant c'est la première suggestion ci-dessus parce que redux-observable ne fournit rien comme troisième argument à votre épique par défaut. Donc dans votre cas, si redux-observable était à blâmer, vous obtiendriez en fait Cannot read property 'customerService' of undefined car le troisième argument ne serait rien, à la place c'est l'objet que vous avez fourni.

+0

Hey ANKIT. Était-ce le problème? – jayphelps