使用打字稿注册时如何访问服务提供商class
How do I access the service provider when registering using typescript class
以下服务提供商注册成功。其他控制器可以毫无问题地使用该服务。我的问题是如何访问提供程序以便在 $injector
服务实例化服务之前对其进行配置?
module apiService{
export interface IBaseService{
leagueID: number;
}
export interface IApiBaseServiceProvider extends ng.IServiceProvider{
setLeagueID(leagueID: number): void;
$get(): IBaseService;
}
class BaseServiceProvider implements IApiBaseServiceProvider{
private _leagueID: number;
$get(){
return new BaseService(this._leagueID);
}
setLeagueID(leagueID: number){
this._leagueID = leagueID;
};
}
class BaseService implements IBaseService{
constructor(private _leagueID: number){};
get leagueID(){
return this._leagueID;
}
}
angular.module('apiService').provider('apiService.baseService', BaseServiceProvider);
}
我试过使用 class 名称作为访问器,但这样做时整个应用程序都失败了。
angular.module('apiService').config(['BaseServiceProvider', function(baseServiceProvider: IApiBaseServiceProvider){
baseServiceProvider.setLeagueID(12);
}]);
documentation 仅显示了使用命名函数实例化提供程序的示例。在后面的解释中,命名函数的名称用于访问提供程序。
因为在上面的示例中使用了 TypeScript class,所以没有用于访问提供程序的命名函数。那么,如何在使用 TypeScript 时配置提供程序 class?
问题出在您的提供商注册上。而不是
angular.module('apiService').provider('apiService.baseService', BaseServiceProvider);
做:
angular.module('apiService').provider('BaseService', BaseServiceProvider);
并像您一样在配置阶段访问,BaseServiceProvider
(后缀词 Provider
)。在其他任何地方注入提供程序实例时,您可以使用 BaseService
。所以基本上你不注入 class 名称,而是注入它注册的名称。
以下服务提供商注册成功。其他控制器可以毫无问题地使用该服务。我的问题是如何访问提供程序以便在 $injector
服务实例化服务之前对其进行配置?
module apiService{
export interface IBaseService{
leagueID: number;
}
export interface IApiBaseServiceProvider extends ng.IServiceProvider{
setLeagueID(leagueID: number): void;
$get(): IBaseService;
}
class BaseServiceProvider implements IApiBaseServiceProvider{
private _leagueID: number;
$get(){
return new BaseService(this._leagueID);
}
setLeagueID(leagueID: number){
this._leagueID = leagueID;
};
}
class BaseService implements IBaseService{
constructor(private _leagueID: number){};
get leagueID(){
return this._leagueID;
}
}
angular.module('apiService').provider('apiService.baseService', BaseServiceProvider);
}
我试过使用 class 名称作为访问器,但这样做时整个应用程序都失败了。
angular.module('apiService').config(['BaseServiceProvider', function(baseServiceProvider: IApiBaseServiceProvider){
baseServiceProvider.setLeagueID(12);
}]);
documentation 仅显示了使用命名函数实例化提供程序的示例。在后面的解释中,命名函数的名称用于访问提供程序。
因为在上面的示例中使用了 TypeScript class,所以没有用于访问提供程序的命名函数。那么,如何在使用 TypeScript 时配置提供程序 class?
问题出在您的提供商注册上。而不是
angular.module('apiService').provider('apiService.baseService', BaseServiceProvider);
做:
angular.module('apiService').provider('BaseService', BaseServiceProvider);
并像您一样在配置阶段访问,BaseServiceProvider
(后缀词 Provider
)。在其他任何地方注入提供程序实例时,您可以使用 BaseService
。所以基本上你不注入 class 名称,而是注入它注册的名称。