あなたはAngulars HTTPを使用する必要はありません。 XMLHttpRequestを呼び出す独自のクラスを構築するか、fetch APIを直接使用するか、AJAX要求を行う他のライブラリを使用します。
角度がhttps://github.com/angular/http(作業中)(Angular2メインレポの外に)それ自身のパッケージには、HTTPを移動しようとしている
あなたはの公開APIに合わせ、あなたのHTTPサービス層のインターフェイスを作成することができますHttpクラスを作成し、AngularアプリケーションをブートストラップするときにHttp
インスタンスをサービスに渡します。お使いのコンポーネントやサービスで、その後
interface MyHttp {
get(url: string, options?: RequestOptionsArgs): Observable<Response>;
...
}
let myHttpService = new MyHttpService();
bootstrap(AppComponent1, [
HTTP_PROVIDERS,
provide(MyHttpService, {
deps: [Http],
useFactory: (http) => {
if(!myHttpService.http) {
myService.http = http;
}
return myService;
})
})]
);
export class MyComponent {
constructor(private _myHttp: MyHttpService) {
this._myHttp.doSomething();
}
}
ヒントのようにそれを使用する:あなたはまた、外のコンポーネントとサービスへHttp
の交換(としてあなたMyHttpService
を注入する場合あなたのコントロールHttp
あなたのMyHttpService
を使用する要求)は、プロバイダは異なって見える必要があります。
したがって、サービスには親パッケージ(プロジェクト)と共有される 'angular' npm依存関係があります。その問題は何ですか?当然のことながら、プロジェクトをdistにコンパイルして、プロジェクトと同じ「角度」を使用できるようにするべきではありません。このサービスは角度以外の環境での使用を意図したものではないので、それほど単純ではありません。 – estus
@estusサービスは別のパッケージです。だから私は可能な場合は、全体のangle2ではなく、httpを使用できるようにしたい。もちろん、ng2全体をインストールすることができ、プロジェクトがng2であるため、一度だけインストールされます。 –
しかし、サービスは、アプリケーションによってホストされている、右か?その後、注入された 'Http'はアプリのインジェクタから送られます。サービスパッケージは、npmの 'angular'依存性を持っている必要はありません(サービスパッケージ内の 'angular2/http'から 'import ... from'はプロジェクトパッケージと同じ' angular2/http'に解決されるでしょう、それはnpmパッケージの動作方法です)。問題は現在の状態ではあいまいであり、実際のコードが不足していますが、ここに問題はないようです。 – estus