私は、Httpサービスをインジェクションして他のコンポーネントで使用しているAngular 2サービスを定義しましたが、正しく行ったとは思わない:DIの角2.1.2 ES5サービスが正しく定義されています
(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.core.Component」の力を使って、働く一方で、そうでない場合、私は「いいえ、テンプレート指定した」エラーを取得していないが、それは本当にただのサービスだが、それは必要はありませんテンプレート。
私はこの質問のように 'ng.core.Injectable()クラス(...)。' を使用してそれを定義しようとした:
create an angular 2 service in es5
が、それはエラー「与えng.core.Injectable (...)クラスは関数ではありません '。答えが書かれてからAngularが変わったのでしょうか?
単純な関数としてサービスを書く例もたくさんありますが、それでHttpサービスを注入することはできません。
純粋なJavascriptでサービスを定義して、Httpを注入してコンポーネントに注入できるようにするにはどうすればよいですか?