2016-07-05 6 views
2

私はちょうど角2に着いたJavaプログラマです。公式のチュートリアルを行うとき、私はクラスの先頭ではなくコンストラクタでこのプロパティを宣言していることに驚きました。コンストラクタの角2のプロパティを宣言する

private router: Router 
private heroService: HeroService 

私は、JavaとJSは非常に異なっているが、この

constructor(private router: Router ,private heroService: HeroService) {} 

ようにすることの間など、技術的な理由で、この中にこの

private router: Router 
private heroService: HeroService 

constructor() {} 

答えて

6

があることを知っていますクラスRouterとの2つのプライベートプロパティを宣言するだけです、

この:

constructor(private router: Router, private heroService: HeroService) {} 

Router(およびHeroService)のインスタンスを注入は、さらに2つのプライベートプロパティを作成し、1つのステートメントで、これらにあなたのサービスの注入されたインスタンスを割り当てます。よりよく理解するために

、これは同じことを行います。

private _router: Router; 
private _heroService: HeroService; 

constructor(router: Router, heroService: HeroService) { 
    this._router = router; 
    this._heroService = heroService; 
} 

あなたはこれらのサービスのインスタンスを持っていない「最初のアプローチ」で。

追記:あなたは自分のコンポーネントにそれらを注入する可能性を与えるあなたのComponent Anntationsの一つでどこかに持っているかもしれませんが、あなたはおそらく、あなたのconstructorメソッドを介して、常にそれらを注入してしまう理由を、実際にそれをしない、それはだproviders: [Router, HeroService]

関連する問題