2016-01-04 2 views
1

У меня возникли проблемы с введением услуги в компонент с использованием ES5. Я, наконец, смог заставить его работать, но обнаружил пару разных способов объявления сервиса. Один из них - более «Угловой» способ объявить услугу?Объявление службы Angular2 с ES5

Здесь компонент

(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 = {})); 
+0

Похож на http://stackoverflow.com/questions/34532138/how-to-inject-custom-service-to-angular-component-in-plain-es5-javascript –

+1

Вы правы. Результат и код очень похожи. Тем не менее, я ищу объяснение относительно того, какая версия службы предпочтительнее ..., которую вы указали, не объясняет. – puddinman13

+0

@ puddinman13 Я думаю, что ваш ответ может быть [здесь] (https://github.com/angular/angular/blob/master/modules/angular2/src/core/util/decorators.ts#L128) –

ответ

2

Я думаю, вам будет хорошо с вариантом 1. Привести пример из Angular.io cheat sheet

var OtherService = ng.core.Class({constructor: function() { }}); 
0

Идущий с первым вариантом, вероятно, можно объявить зависимости от других услуг, как ng.http, во втором вы не можете сделать это легко.

Смежные вопросы