2016-07-13 7 views
1

Ich verfolge das Heros Tutorial von angular 2.0 section.5 services.Angular 2.0 Demo Tutorial - Erklärung

Die Dokumentation sagt es nicht notwendig, die this.heroes in einer Funktion

constructor(private heroService: HeroService) { } 

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

, die nicht funktioniert zu wickeln. und immer Fehler wie

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

Während, wenn i onInit verwenden dann funktioniert es (die Fertigstellung des Abschnitts).

constructor(private heroService: HeroService) { 

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

Warum bekomme ich das Ergebnis nur während des Laufens unter ngOnInit?

Antwort

0

Mein Verständnis ist, dass die Komponente Klasse eine Art Toolbox ist, in der Sie Eigenschaften und Methoden definieren.

Methoden reagieren dann auf Angular Hooks - wie ngAfterViewInit oder ngOnInit - oder auf Ereignisse wie click().

Manchmal müssen Komponenten Daten laden, wenn sie instanziiert sind. In diesem Fall können Sie ngOnInit oder constructor verwenden, um Ihre Lademethode aufzurufen.

Sie rufen Methoden in Ihrer Klassendefinition nicht direkt auf. Ich denke, wenn du das tust, könnte das ein Problem sein, wenn du eine Klasse importierst oder wenn du eine Klasse erweiterst.

Sie möchten nicht, dass die Klasse Ihre Daten bei jedem Import Ihrer Klasse abruft; Vielmehr möchten Sie die vollständige Kontrolle darüber haben, wann Ihre Daten importiert werden.


Hier sind die best practices for Angular 2