2016-09-24 5 views
1

Es gibt zwei Möglichkeiten, wie ich Leute sehe, die Dienste in ihren Komponenten und anderen Diensten verwenden. Ein häufiger Anwendungsfall ist der Http-Dienst. Beide Fälle importieren:Wann sollten in 'angular2' Komponenten oder Services 'Services' zugewiesen werden?

import { Http } from '@angular/http'; 

Fall 1:

constructor (private http: Http) { 
    this.http = http; 
} 

Fall 2:

constructor (private http: Http) { } 

Beide Fälle führen zur Http Service bei this.http zur Verfügung stehen.

Hat die Verwendung von Fall 1 gegenüber Fall 2 einen Vorteil? Hat es mit mehreren Instanziierungen zu tun?

Antwort

1

Es gibt keine Notwendigkeit für this.http = http weil

constructor (private http: Http) { } 

transpiles zu this.http = http und Ergebnisse in doing this twice.

Es ist entweder das, oder

constructor (@Inject(Http) http) { 
    this.http = http; 
} 

, wenn die Kompatibilität mit ES.next und Babel in Priorität.

+0

Interessant ... Es macht also nichts kaputt, es ist einfach überflüssig. Es sieht so aus, dass es nur sinnvoll ist, 'this.x = x' zu machen, wenn wir nicht das Schlüsselwort' private' verwenden. [Beispiel Spielplatz] (http://www.typescriptlang.org/play/#src=class%20Foo%20%7B%0D%0A%20%20%20%20constructor (http% 3A% 20Http)% 20% 7B % 0D% 0A% 20% 20% 20% 20% 20% 20% .http% 20% 3D% 20http% 3B% 0D% 0A% 20% 20% 20% 20% 7D% 0D% 0A% 7D). Vielen Dank! –

+0

Das ist richtig. Die Syntax für die Sichtbarkeit in Konstruktoren ist genau dort, um den Körper der 'Konstruktor'-Funktion zu entstören (meistens wird es nur' {} 'in A2 injectables sein). – estus

Verwandte Themen