如何在注册使用打字稿类时访问服务提供者

以下服务提供商已成功注册。 其他控制器可以毫无麻烦地使用该服务。 我的问题是如何访问提供程序为了配置它在服务由$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);    
}]);

该文档仅显示使用命名函数实例化提供程序的示例。 在后面的解释中,命名函数的名称用于访问提供者。

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


问题在于您的提供商注册。 代替

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

做:

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

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

链接地址: http://www.djcxy.com/p/85665.html

上一篇: How do I access the service provider when registering using typescript class

下一篇: Load/stores per cycle for recent CPU architecture generations