7

registriere. Der folgende Service-Provider registriert sich erfolgreich. Andere Controller können den Dienst ohne Probleme verwenden. Meine Frage ist, wie man auf den Anbieter zugreift, um ihn zu konfigurieren, bevor der Service durch den Service $injector instanziiert wird?Wie greife ich auf den Service-Provider zu, wenn ich mich mit der Typoskript-Klasse

Ich habe versucht, den Klassennamen als Accessor zu verwenden, aber die gesamte Anwendung schlägt fehl.

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

Die documentation zeigt nur ein Beispiel, bei dem eine benannte Funktion verwendet wird, um den Anbieter zu instanziieren. Später in der Erklärung wird der Name der benannten Funktion verwendet, um auf den Anbieter zuzugreifen.

Da im obigen Beispiel eine TypeScript-Klasse verwendet wird, gibt es keine benannte Funktion für den Zugriff auf den Anbieter. Wie konfiguriert man den Provider bei Verwendung einer TypeScript-Klasse?

Antwort

4

Problem ist mit Ihrer Registrierung des Anbieters. Statt

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

tun:

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

und Zugriff in der Konfigurationsphase wie Sie das tun, BaseServiceProvider (postfix Wort Provider). Wenn Sie die Provider-Instanz irgendwo anders einfügen, können Sie einfach BaseService verwenden. Sie injizieren also im Grunde nicht den Klassennamen, stattdessen injizieren Sie den Namen, mit dem Sie registriert sind.

+1

Das hat wie ein Charme funktioniert. Ich konnte den 'apiService.baseService' behalten und einfach 'Provider' anhängen, wie Sie 'apiService.baseServiceProvider' anweisen mussten. Vielen Dank für Ihre Hilfe und die unglaublich schnelle Antwort. – proff321

+0

@ proff321 Yup das würde auch funktionieren. Hauptsache ist, mit dem Namen zu injizieren, mit dem es registriert ist. – PSL