AngularJS和Typescript - 注入其他服务的服务未定义

jdr*_*er3 3 dependency-injection angularjs typescript

我正在使用此启动器模板以及此SO帖子中概述的修改.到目前为止一直顺利进行 - 我正在尝试将服务注入到另一个服务的构造函数中,但注入的值总是"未定义".没有抛出任何错误.

这是一个简化的例子:

module app.services {
    export class dashboardFilterService implements IService {
        constructor($rootScope: ng.IRootScopeService) {
            // $rootScope is undefined...
            //$rootScope.$broadcast('FilterInitialized');
        }
    }
}
app.registerService('dashboardFilterService', ['$rootScope']);
Run Code Online (Sandbox Code Playgroud)

将服务注入控制器工作正常.我对打字稿和角色都很陌生,所以对于有更多经验的人来说这可能是显而易见的.这是编译的js供参考:

var app;
(function (app) {
    (function (services) {
        var dashboardFilterService = (function () {
            function dashboardFilterService($rootScope) {
                // $rootScope is undefined...
                //$rootScope.$broadcast('FilterInitialized');
            }
            return dashboardFilterService;
        })();
        services.dashboardFilterService = dashboardFilterService;
    })(app.services || (app.services = {}));
    var services = app.services;
})(app || (app = {}));
app.registerService('dashboardFilterService', ['$rootScope']);
Run Code Online (Sandbox Code Playgroud)

bas*_*rat 5

推荐图案:

module app.services {
    export class dashboardFilterService implements IService {
        static $inject = ['$rootScope']; // This should do it
        constructor($rootScope: ng.IRootScopeService) {
            //$rootScope.$broadcast('FilterInitialized');
        }
    }
    app.registerService('dashboardFilterService', dashboardFilterService );
}
Run Code Online (Sandbox Code Playgroud)

PS:我做了一个关于这个主题的视频:http://www.youtube.com/watch?v = YES8m3BdnEM&hd = 1