2016-11-08 2 views
1

Nach dem Winkel 2 Tutorial @https://angular.io/docs/ts/latest/tutorial/toh-pt4.htmlAngular Providers

Im

@Component({ 
}) 

I "providers: [HeroService]" eingeführt, die die getHeroes() Methode enthält.

einen Konstruktor Erstellt:

constructor(private heroService: HeroService) {} 

nun der Teil verstehe ich nicht, wie ich in der Lage bin

this.heroService.getHeroes()

Das einzig propertes in dieser Klasse definiert zu verwenden sind:

title = 'Tour of Heroes'; 
heroes: Hero[]; 
selectedHero: Hero; 

Erstellt der Provider im @Component Dekorateur automatisch eine Eigenschaft für den Zugriff über this.?

Die App funktioniert, weiß nur nicht, wie wir

Antwort

1

Die private (könnte auch sein, public) in

constructor(private heroService: HeroService) {} 

schafft eine Eigenschaft zuzugreifen heroService durch this. auf magische Weise konnten heroService und weist den Wert zu, der an den Konstruktor übergeben wird. Das ist eine TypeScript-Funktion und hängt nicht von Angular2 oder DI ab.

+0

Interessant, also, wenn ich es leer lasse, wird es standardmäßig public, aber erstellt keine Eigenschaft, aber die Tatsache, dass Sie es als privat oder öffentlich deklarieren, wird der Klasse die Eigenschaft zu erstellen. Gut zu wissen. Ich kann mich nicht darum kümmern, warum diese Syntax etwas mit dem Erstellen einer Eigenschaft zu tun haben sollte. Liegt es daran, dass es als privat oder öffentlich definiert wird, dass es bedeutet, dass es wiederverwendet wird? Sorry, wenn diese Frage keinen Sinn ergibt, bin ich ziemlich Neuling. Aber so oder so, danke für die Antwort. Sehr gut zu wissen;) –

+1

Es ist sehr üblich, Konstruktor-Parameter zu Eigenschaften zuzuweisen, daher haben sie diesen syntaktischen Shugar erstellt. Wenn Sie "private" und "public" weglassen, wird keine Eigenschaft erstellt und der 'heldService' existiert nur innerhalb des Konstruktors. –

Verwandte Themen