pro*_*321 7 configuration service-provider angularjs typescript typescript1.5
以下服务提供程序已成功注册.其他控制器可以毫无困难地使用该服务.我的问题是如何在服务实例化服务之前访问提供程序以进行配置$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);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用类名作为访问者,但是这样做时整个应用程序都失败了.
angular.module('apiService').config(['BaseServiceProvider', function(baseServiceProvider: IApiBaseServiceProvider){
baseServiceProvider.setLeagueID(12);
}]);
Run Code Online (Sandbox Code Playgroud)
该文档仅显示了一个示例,其中使用命名函数来实例化提供程序.稍后在解释中,命名函数的名称用于访问提供程序.
由于在上面的示例中使用了TypeScript类,因此没有用于访问提供程序的命名函数.那么,在使用TypeScript类时如何配置提供程序?
问题出在您的提供商注册上。代替
angular.module('apiService').provider('apiService.baseService', BaseServiceProvider);
Run Code Online (Sandbox Code Playgroud)
做:
angular.module('apiService').provider('BaseService', BaseServiceProvider);
Run Code Online (Sandbox Code Playgroud)
并像您一样在配置阶段进行访问BaseServiceProvider(后缀单词Provider)。当在其他地方注入提供程序实例时,您可以只使用BaseService. 所以基本上你不注入类名,而是使用它注册的名称注入。
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |