我已经定义了一个Angular 2服务,该服务注入了Http服务并被其他组件使用,但我不认为我已经正确地完成了它:
(function (app) {
'use strict';
app.LoaderService = ng.core.Component({
providers: [ng.http.Http],
// TODO We shouldn't need to define a template in a service. Maybe service shouldn't be a Component?
template: ''
}).Class({
constructor: [ng.http.Http, function (http) {
this.http = http;
}],
getData: function (url, target) {
var getter = this.http.get(url);
getter.subscribe(function (result) {
target.data = result.json();
});
}
});
})(window.app || (window.app = {}));
虽然这有效,但使用了&ng; ng.core.Component'迫使我定义一个“模板”,否则我会得到一个未指定的模板'错误,但它实际上只是一项服务,它不应该需要一个模板。
我尝试使用' ng.core.Injectable()来定义它.Class(...)'就像这个问题:
create an angular 2 service in es5
但是这会产生错误&n; ng.core.Injectable(...)。类不是函数'。也许Angular已经改变了,因为答案是写的?
还有很多将服务编写为简单函数的例子,但这不会让我将Http服务注入其中。
我应该如何在纯Javascript中定义服务以支持将Http注入其中并允许将其注入组件?
答案 0 :(得分:1)
是的,不再有Class
属性。
ng2 beta-5的源代码如下:
TypeDecorator.annotations = chainAnnotation;
TypeDecorator.Class = Class;
if (chainFn) chainFn(TypeDecorator);
return TypeDecorator;
今天您只需使用ng.core.Class
即可获得服务。这是备忘单