2016-11-13 6 views
14

Wenn Sie etwas Code ausführen möchten, nachdem die Komponenten/Direktive Eingaben geändert haben, können Sie Setter oder ngOnChanges Hook verwenden, aber was sind die Vorteile der Verwendung eines auf dem anderen? Oder sind sie genau das Gleiche?Angular 2 Setter vs ngOnChanges

@Input() 
    set someInput(val) { 
    this.runSomething(); 
    } 

    ngOnChanges(changes) { 
    this.runSomething(); 
    } 

Antwort

9

Ein Vorteil ngOnChanges() ist, dass Sie alle Änderungen auf einmal, wenn Ihre Komponente mehr @Input() s hat.
Wenn Ihr Code nur von einem einzelnen @Input() abhängt, ist ein Setter wahrscheinlich der bessere Ansatz.

+0

Aber wenn die Komponente viele Eingaben hat, wird die "ngOnChanges" -Methode nicht zu einem Ort für mehrere möglicherweise nicht verwandte Dinge? –

+0

Das meine ich mit "Wenn dein Code nur von einem einzelnen' @Input() '... abhängt". Wenn der Code, der ausgeführt werden soll, wenn sich eine einzelne spezifische Eingabe ändert, dann ist es wahrscheinlich der bessere Weg, die Eingabe zu einem Setter zu machen. –

+0

Schöne Antwort. Ich verstehe also, dass ngOnchanges nicht aufgerufen wird, wenn @input als Setter verwendet wird. – anonymous