2016-05-18 4 views
19

Angular 2 docsからのいくつかの例のコンストラクタです:Angular2タイスクリプトでコンストラクタを作成するタイミングは?ここ

export class AppComponent implements OnInit { 
    title = 'Tour of heroes'; 
    heroes: Hero[]; 
    selectedHero: Hero; 

    constructor(private heroService: HeroService) { } 

    getHeroes() { 
     this.HeroService.getHeroes().then(heroes => this.heroes = heroes); 
    } 
} 

と...

class Car { 
    constructor(engine, tires, doors){ 
     this.engine = engine; 
     this.tires = tires; 
     this.doors = doors; 
    } 
} 

なぜとすると、角度2/typescriptですでconstructor()を作成する(私はしました、私は理解していませんそれがDependency InjectionとServicesのコンストラクタを作成する公式ドキュメントを読んでください)。あなたは、サービスそのものをオフに基づいて、複雑なデフォルト値を初期化する(私のアプリの中で)も言及として

+1

+1。私はコンストラクタに何があるべきかを知ることに苦労しています(できるだけ「できるだけ少ない」とは別に)。私はそれがより広範なプログラミングコンセプトだと思うが、私の読書は、コンストラクタとその目的を簡単な方法で記述するものは特に明白ではない。 – Dan

+0

こんにちはSarvesh、あなたのコードをテキストとして挿入した方が他の人にとっては良いかもしれません。 –

+0

@ J.Chomel私は今それが良いと思っています:) –

答えて

23

コンストラクタは、あなたのオブジェクトをインスタンス化するとき提供するパラメータを定義します。 TypeScriptでは、privateまたはpublicのような修飾子を追加して、同じクラスのプロパティで定義し、指定された値でその値を設定することもできます。例えば

class Car { 
    constructor(private engine:string, private tires:string, private doors:number){ 
    } 
} 

は同様である:Angular2コンストラクタにおいて

class Car { 
    constructor(engine:string, tires:string, doors:number){ 
    this.engine = engine; 
    this.tires = tires; 
    this.doors = doors; 
    } 
} 

は、依存性の注入のために使用されます。関連するデコレータ(@ComponentまたはInjectable)は、メタデータ(@Inject内のタイプまたはヒント)を収集して、インスタンス化するオブジェクトに何を提供するかを決定します。

は、コンストラクタは、コンポーネントのライフサイクルの一部ではないことに注意してください。プロパティは、このレベルでAngular2で後で設定できます。

+0

参照[この例](https://www.typescriptlang.org/play/#src=class%20Rectangle%20%7B%0D%0A%20%20constructor(プライベート%20height%3Anumber%2C%20private%20width%あなたの周りで遊ぶことができる例のためのTypeScriptの遊び場の%7B%0D%0A%20%20%7D%0D%0A%7D) – dayuloli

3

コントローラのコンストラクタは、主に依存性の注入/サービスのために使用されています。コントローラーテンプレートが初期化される前にコンストラクターが実行されるため、変数は正確にレンダリングされないため、ngOnInitおよびその他の同様のメソッドが必要です。テンプレート/ビューがデータにアクセスできるように、これらの 'ブートストラップ'メソッドを使用して通常の「構築」作業を実行する必要があります。サービスのコンストラクタについて

、鉱山の数が通常のコンストラクタを使用して、彼らはより多くの標準クラスのように振る舞うように、ユーザデータを既存のオフに基づいてサービスのさまざまな部分を初期化します。

これらの答えは助けになるでしょう:

関連する問題