2016-07-13 7 views
1

私は、角度2.0セクション5のサービスからHerosチュートリアルをフォローしています。角度2.0のデモチュートリアル - 説明

ドキュメントは仕事をdoesntの関数内this.heroes

constructor(private heroService: HeroService) { } 

this.heroService.getHeroes().then(heroes => this.heroes = heroes); 

をラップするためにその必要はないと言います。エラーが発生しました

Error: TypeError: Cannot read property 'getHeroes' of undefined(…) 

私がonInitを使用すると、それは動作します(セクションの完了)。

constructor(private heroService: HeroService) { 

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

なぜ結果がngOnInitで実行されているのですか?

答えて

0

私の理解では、コンポーネントクラスは、プロパティとメソッドを定義するツールボックスの一種です。

メソッドは、ngAfterViewInitまたはngOnInitのような角フックまたはclick()のようなイベントに応答します。

コンポーネントがインスタンス化されたときにコンポーネントをロードする必要がある場合があります。その場合は、ngOnInitまたはconstructorを使用してロードメソッドを呼び出すことができます。

クラス定義内のメソッドを直接呼び出すことはありません。私がしていれば、クラスをインポートするときやクラスを拡張するときに問題になると思います。

クラスをインポートするたびにクラスがデータを取得しないようにします。むしろ、データをいつインポートするかを完全に制御したいと思っています。ここで


best practices for Angular 2

ある
関連する問題