たびに取得:角度2つのRC5プロバイダは、新しいインスタンスに、我々はこのようなコンポーネントレベルでのプロバイダを宣言することができRC5まで
@Component({
providers: [SomeService]
})
そして、すべてのコンポーネントがSomeServiceの新しいインスタンスを取得しますが、今RC5とこのような影響をどのように達成するかについては、非推奨となっています。
たびに取得:角度2つのRC5プロバイダは、新しいインスタンスに、我々はこのようなコンポーネントレベルでのプロバイダを宣言することができRC5まで
@Component({
providers: [SomeService]
})
そして、すべてのコンポーネントがSomeServiceの新しいインスタンスを取得しますが、今RC5とこのような影響をどのように達成するかについては、非推奨となっています。
クイックスタートhereによれば、サービスは実際には変更されていません。まだサービスは、そのサービス
4 3.provide成分
にそのサービス2.import注射
を介して作成され、それを構成された4つのコアもの
新しいインスタンスを返すファクトリメソッドをサービスに追加する方法もあります。
export class SomeService {
constructor(private http: Http) {}
create() {
return new SomeService(this.http);
}
}
これは非常にハックであり、コンポーネントでcreateを呼び出す必要があります。
サブスクライブされた解決策は、Factory Providerを使用するようです。
基本的に、あなたは、ファクトリメソッドとプロバイダオブジェクトを作成します。
import { Http } from '@angular2/core';
import { SomeService } from './SomeService';
let someServiceFactory = (http: Http) => {
return new SomeService(http);
};
export let SomeServiceProvider =
{ provide: SomeService,
useFactory: someServiceFactory,
deps: [Http]
};
あなたが前にやったように、今あなたがSomeService
を注入し、あなたは常に新しいtransient
インスタンスを取得します。
インポートあなたのモジュールまたはコンポーネントにプロバイダとproviders: [someServiceProvider]
としてそれを登録したり、としてそれをインライン://角度:
providers: [{
provide: SomeService,
useFactory: (http: Http) => { return new SomeService(http)},
deps: [Http]
}]
あなたが(HTTPS [RC5移行ガイドにRC4]を経由してもらえ.io/docs/ts/latest/cookbook/rc4-to-rc5.html)? –
しました!見つけられなかったり、答えを逃した... – Bazinga
私はこの質問は真実だとは思わない。クイックスタートに従えば、コンポーネントのプロバイダとしてサービスが呼び出されます。 – Bean0341