2017-07-05 5 views
0
export class ReactiveFormOne { 
    studentA: Student = new Student(); 

    studentB: Student; 

    constructor(){ 
    this.studentB = new Student(); 
    } 
} 

Was ist der grundlegende Unterschied zwischen studentA und studentB?Was ist der Unterschied Variable innerhalb Konstruktor zwischen Instanziierung und direkt in der Klasse + Typoskript/Schräg

+1

Nichts, in einem so trivialen Fall. Aber was, wenn Sie es mit etwas instanziieren müssen, das nicht verfügbar ist, bis das Formular selbst instanziiert wird (z. B. eine injizierte Abhängigkeit)? – jonrsharpe

+1

Meintest du 'this.studentB = new Student();'? –

+0

Sie könnten die transpilierte Version überprüfen und sehen, dass in Ihrem Fall beide äquivalent sind 'function ReactiveFormOne() { this.studentA = new Student(); this.studentB = neuer Student(); } ' –

Antwort

2

Diese sind effektiv identisch. Ein Klasseneigenschaftsinitialisierer wird nach dem ersten -Aufruf oder der ersten Anweisung des Konstruktors in eine entsprechende Zuweisung transpiliert, wenn kein super Aufruf vorliegt.

Ich würde empfehlen, Reihenfolge-abhängige Initialisierungen im Konstruktorkörper zu setzen, da zukünftige Betreuer im Allgemeinen weniger bereit sind, Anweisungen in Blöcken neu zu ordnen, aber z. Ordnen Sie initialisierte Eigenschaften, die im Klassenrumpf deklariert sind, neu an, damit sie den Stilrichtlinien entsprechen.

+0

so Konstruktor ist nur Anbieter/Dienstleistungen ziehen, d. H., Abhängigkeiten injizieren ist es? Ich komme aus Java Hintergrund n mit sehr wenig Angular 1 Wissen, also ertragen Sie mit mir. – BeingSuman

Verwandte Themen