gpt4 book ai didi

angularjs - 使用 typescript 类注册时如何访问服务提供商

转载 作者:搜寻专家 更新时间:2023-10-30 20:38:06 24 4
gpt4 key购买 nike

以下服务提供者注册成功。其他 Controller 可以毫无问题地使用该服务。我的问题是如何在 $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);

}

我试过使用类名作为访问器,但这样做时整个应用程序都失败了。

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

documentation仅显示一个示例,其中命名函数用于实例化提供者。在后面的解释中,命名函数的名称用于访问提供者。

因为在上面的示例中使用了 TypeScript 类,所以没有用于访问提供程序的命名函数。那么,在使用 TypeScript 类时如何配置提供程序?

最佳答案

问题出在您的提供商注册上。而不是

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

做:

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

并像您一样在配置阶段访问,BaseServiceProvider(后缀词 Provider)。在其他任何地方注入(inject)提供者实例时,您只需使用 BaseService。所以基本上你不注入(inject)类名,而是注入(inject)它注册的名称。

关于angularjs - 使用 typescript 类注册时如何访问服务提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30812286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com