Ho una classe controller ModalCtrl
e voglio creare una classe figlio ModalCtrlChild extends ModalCtrl
. Il problema è quando provo a farlo ottengo un errore sconosciuto fornitore in uno dei moduli iniettati in ModalCtrl
.Iniezione moduli nel controller esteso (ES6) causa Errore provider sconosciuto
Ho usato il generatore this per costruire il progetto e utilizza NgInject dietro le quinte per iniettare le dipendenze, ho il sospetto che ci sia qualcosa di divertente lì.
ModalCtrl:
export default class ModalCtrl {
static get UID(){
return "ModalCtrl"
}
... // all my ModalCtrl methods here
/* @ngInject */
constructor(ngDialog, PreoModalType, OutletService, $q, $timeout, VenueService) {
"ngInject";
... // ModalCtrl constructor logic initing variables
}
}
ModalCtrlChild:
import ModalCtrl from '../../preoModal.controller';
export default class ModalCtrlChild extends ModalCtrl{
static get UID(){
return "modalCtrlChild"
}
/* @ngInject */
constructor() {
// "ngInject";
console.log("in super constructor");
super();
}
}
Errore:
Error: [$injector:modulerr] Failed to instantiate module function ModalCtrlChild() due to:
Error: [$injector:unpr] Unknown provider: ngDialog
http://errors.angularjs.org/1.5.3/$injector/unpr?p0=ngDialog
E ngDialog è sicuramente importata e di lavoro. Se cancelli extends ModalCtrl
da ModalCtrlChild non ricevo errori e il mio codice funziona bene, ma non sono in grado di ottenere l'ereditarietà di cui ho bisogno. Qualche idea apprezzata.
EDIT
avevo cercato la risposta di eenagy prima di inviare la domanda, che non funziona o, come il problema sembra essere nei inietta classe bambino, non in inietta classe del genitore.
sourdoughdetzel, provato il suo suggerimento:
- annotazione Rimosso e le dipendenze da ModalCtrlChild
- annotazione Rimosso e dipendenze da ModalCtrl ma li lasciate in figlio
Got esattamente lo stesso errore:
Error: [$injector:modulerr] Failed to instantiate module function PreoModalController_Form() due to:
Error: [$injector:unpr] Unknown provider: ngDialog
Ho il sospetto che questo deve fare con il modo in cui Babel sta costruendo la classe estesa e non sta permettendo a ngInject di fare il suo lavoro. Sto cercando di trovare un modo per fare iniezioni manuali qui, che dovrebbe risolvere il problema e dimostrare che questo è il problema in quanto non ne so abbastanza su come il lavoro di babel per risolvere questo problema.
_ "ngDialog è DEFINITAMENTE importato e funzionante" _ Non importa. La domanda è se è disponibile come servizio nel modulo del controllore. Inoltre se il costruttore di 'ModalCtrl' si aspetta degli argomenti piuttosto che passare quegli argomenti quando si chiama' super' nel costruttore di 'ModalCtrlChild'. Il messaggio di errore sembra strano btw. Sembra che tu provi ad istanziare il tuo controller come un modulo. Come appare quel codice? – zeroflagL
@ caiocpricci2 hai risolto questo? – eenagy
Ho suonato un po 'di più e funziona correttamente per me quando iniettando ng-dialog ... – eenagy