2016-12-31 1 views
3

私はservice下回っていますサービスコンストラクタはアンサンブル2にどのようにインストールされますか?

import {Injectable} from 'angular2/core'; 
import {Service2} from './app.service2'; 

@Injectable() 
export class Service1 { 
    constructor(service2:Service2) { 
    this.service2 = service2; 
    } 

    getData() { 
    return this.service2.getData(); 
    } 
} 

私は私の構成要素の一つで、このサービスを使っていますが、私はこのserviceが引数としてservice2を受け取るない方法がわからないのですか? Tradionally、JSで私はこれのような何かをする。

var s = new Service1(service2); 

しかし、私はこのようなものは下のプランカには表示されませんが、動作します。 https://plnkr.co/edit/PsySVcX6OKtD3A9TuAEw?p=preview

誰でもこれにいくつかの光を追加できますか?

答えて

3

Angular2は、dependency injection(DI)を使用してインスタンスを作成します。コンポーネント、ディレクティブ、パイプ、サービスのクラスインスタンスを作成します。このため、コンストラクタパラメータとmatchinインスタンスのプロバイダの登録リストをチェックし、DIがnew Xxx(...)を呼び出すと、プロバイダリストにあるすべてのプロバイダが渡され、見つからない場合は例外がスローされます。

クラスの一つはパラメータを持つコンストラクタを持っている場合、クラスはデコレータ(@Component()の一つ、@Directive()@Pipe()、又は@Injectable()を有する必要がある。これは、それがコンストラクタを分析する必要があることをDIのために示している。

関連する問題