Angular 2 (ベータ) での他のサービスへのサービスの挿入
コンポーネントへのサービスの挿入は、@Component デコレーターを使用することで簡単に行えます。ただし、コンポーネントの外にサービスを挿入すると、問題が発生します。
問題ステートメント
Angular 2 では、次のように、他のサービス内でサービスを手動でインスタンス化することは避けたいと考えています。次のコード スニペット:
export class MyFirstSvc { } export class MySecondSvc { constructor() { this.helpfulService = new MyFirstSvc(); } } export class MyThirdSvc { constructor() { this.helpfulService = new MyFirstSvc(); } }
ソリューション
この解決策には、注入するサービスで @Injectable デコレータを使用することが含まれます。このデコレーターは、依存関係注入用のサービスのコンストラクター パラメーターを準備します。
インジェクター階層
注入がどのように機能するかを理解するには、インジェクター階層の概念を理解することが不可欠です。
コンポーネントまたは別のサービスにサービスを挿入するとき、Angular2 は次の順序でプロバイダーを検索します:
プロバイダー共有
インジェクター階層により、サービス インスタンスの制御された共有が可能になります:
例
@Injectable() export class Service1 { constructor(service2:Service2) { this.service2 = service2; } getData() { return this.service2.getData(); } }
@Injectable() export class Service2 { getData() { return [{ message: 'message1' }, { message: 'message2' }]; } }
この例では:
リソース
以上がAngular 2 で他のサービスにサービスを挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。