2016-05-18 8 views
19

Hier sind einige Beispiele Konstrukteure aus den Angular 2 docs:Wann Konstruktor in Angular2 Typoskript erstellen?

export class AppComponent implements OnInit { 
    title = 'Tour of heroes'; 
    heroes: Hero[]; 
    selectedHero: Hero; 

    constructor(private heroService: HeroService) { } 

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

und ...

class Car { 
    constructor(engine, tires, doors){ 
     this.engine = engine; 
     this.tires = tires; 
     this.doors = doors; 
    } 
} 

Ich verstehe nicht, Warum und wann ein constructor() in Winkel 2/Typoskript zu erstellen (Ich habe Lesen Sie die offizielle Dokumentation, in der sie einen Konstruktor für Dependency Injection und für Services erstellen.

+1

+1. Ich habe Mühe zu wissen, was in einem Konstrukteur sein sollte (außer "so wenig wie möglich") und was nicht. Ich denke, es ist ein breiteres Programmierungskonzept, aber meine Lektüre hat nichts besonders Deutliches ergeben, das Konstrukteure und ihren Zweck auf einfache Weise beschreibt. – Dan

+0

Hallo Sarvesh, es könnte für andere besser sein, wenn Sie Ihren Code als Text eingefügt haben. –

+0

@J.Chomel Ich denke jetzt ist es besser :) –

Antwort

23

Konstrukteurs definieren, welche Ihre Objekte zu schaffen, die Parameter, wenn instanziiert. In TypeScript können Sie auch Modifikatoren wie private oder public hinzufügen, um Klasseneigenschaften gleichzeitig zu definieren und ihre Werte mit den bereitgestellten Klassen festzulegen.

Zum Beispiel:

class Car { 
    constructor(private engine:string, private tires:string, private doors:number){ 
    } 
} 

ist ähnlich:

class Car { 
    constructor(engine:string, tires:string, doors:number){ 
    this.engine = engine; 
    this.tires = tires; 
    this.doors = doors; 
    } 
} 

In Angular2 Konstrukteuren für Dependency Injection verwendet werden. Der zugehörige Decorator (@Component oder Injectable) sammelt Metadaten (Typen oder Hinweise innerhalb von @Inject), um zu bestimmen, was dem zu instanziierenden Objekt zur Verfügung gestellt werden soll.

Beachten Sie, dass Konstruktoren nicht Teil des Komponentenlebenszyklus sind. Eigenschaften können später von Angular2 auf dieser Ebene festgelegt werden ...

+0

Siehe [dieses Beispiel] (https://www.typescriptlang.org/play/#src=class%20Rectangle%20%7B%0D%0A%20%20constructor (private% 20height% 3Anumber% 2C% 20private% 20width% 3Anzahl)% 7B% 0D% 0A% 20% 20% 7D% 0D% 0A% 7D) auf dem TypScript-Spielplatz für ein Beispiel, mit dem Sie herumspielen können. – dayuloli

3

Controller-Konstruktoren werden hauptsächlich für Abhängigkeitsinjektionen/-dienste verwendet, wie Sie bereits erwähnt haben, und auch (in meinen Apps) für die Initialisierung komplexer Standardwerte, die auf den Diensten selbst basieren. Da der Konstruktor ausgeführt wird, bevor die Controller-Vorlage initialisiert wird - keine Variablen werden genau gerendert, daher die Notwendigkeit für ngOnInit und andere ähnliche Methoden. Diese "Bootstrap" -Methoden sollten verwendet werden, um die normalen Konstruktionsaufgaben auszuführen, damit die Vorlage/Ansicht auf die Daten zugreifen kann.

In Bezug auf Dienstkonstruktoren verwenden einige von mir den Konstruktor normal und initialisieren verschiedene Teile des Dienstes basierend auf vorhandenen Benutzerdaten, da sie eher wie Standardklassen agieren.

Diese Antworten werden von Hilfe sein:

Verwandte Themen