使用 ES5 声明 Angular2 服务

Declaring an Angular2 Service with ES5

我在使用 ES5 将服务注入组件时遇到问题。我终于能够让它工作,但发现了几种不同的服务声明方式。其中之一是更 "Angular" 声明服务的方式吗?

这里是组件

(function (app) {
app.employeeSearchComponent = ng.core
    .Component({
        selector: 'employee-search',
        templateUrl: rootUrl + 'Home/EmployeeSearch',
        providers: [app.Service]
    })
    .Class({
        constructor: [app.Service, function(service) {
                   console.log(service.greeting);
            }]
        });
})(window.app || (window.app = {}));

这是服务(选项 1)

(function(app) {
    app.Service = ng.core.Class({
        constructor: function(){},
        greeting: function() {
            return 'hello';
        }
    });
})(window.app || (window.app = {}));

这是服务(选项 2)

(function(app) {
    app.Service = function() {
        this.greeting = function() {
            return 'hello';
        }
    };
})(window.app || (window.app = {}));

我认为您可以选择选项 1。从 Angular.io cheat sheet

中找一个例子
var OtherService = ng.core.Class({constructor: function() { }});

使用第一个选项,您可能可以声明对其他服务的依赖关系,例如 ng.http,第二个选项您不能轻易做到这一点。