7

Il seguente provider di servizi registra correttamente. Altri controller possono utilizzare il servizio senza problemi. La mia domanda è come accedere al provider per configurarlo prima che il servizio venga istanziato dal servizio $injector?Come accedere al fornitore di servizi quando si registra utilizzando la classe typescript

Ho provato a utilizzare il nome classe come accessor ma l'intera applicazione non riesce quando lo fa.

angular.module('apiService').config(['BaseServiceProvider', function(baseServiceProvider: IApiBaseServiceProvider){ 
    baseServiceProvider.setLeagueID(12);  
}]); 

L'documentation mostra solo un esempio in cui una funzione denominata viene utilizzata per creare un'istanza del provider. Più avanti nella spiegazione, il nome della funzione con nome viene utilizzato per accedere al provider.

Poiché nell'esempio precedente viene utilizzata una classe TypeScript, non è disponibile alcuna funzione con nome per accedere al provider. Quindi, come si configura il provider quando si utilizza una classe TypeScript?

risposta

4

Il problema si verifica con la registrazione del provider. Invece di

angular.module('apiService').provider('apiService.baseService', BaseServiceProvider); 

fare:

angular.module('apiService').provider('BaseService', BaseServiceProvider); 

e l'accesso alla fase di configurazione come si fa, BaseServiceProvider (parola postfix Provider). Quando si inserisce l'istanza del provider in qualsiasi altro luogo, è sufficiente utilizzare BaseService. Quindi in pratica non si inietta con il nome della classe, invece si inietta con il nome con cui è registrato.

+1

Che ha funzionato come un fascino. Sono stato in grado di mantenere 'apiService.baseService' e ho semplicemente aggiunto 'Provider' come richiesto di creare' apiService.baseServiceProvider'. Grazie mille per il tuo aiuto e la risposta sorprendentemente veloce. – proff321

+0

@ proff321 Sì, funzionerebbe anche. La cosa principale è iniettare il nome con cui è registrato. – PSL