ngafterviewinit Angular 2 Component Constructor Vs OnInit



angular lifecycle (3)

Diese Frage hat hier bereits eine Antwort:

Wenn die Funktion x bei jedem Laden einer Komponente ausgeführt werden soll, unabhängig davon, ob es das erste Mal ist, navigiere ich zu einer anderen Site und gehe zurück oder es ist das fünfte Mal, dass die Komponente geladen wurde.

Was soll ich in Funktion x setzen? Der Komponentenkonstruktor oder OnInit?


Answer #1

Der Konstruktor ist eine vordefinierte Standardmethode der Typoskript-Klasse. Es gibt keine Beziehung zwischen Angular und constructor . Normalerweise verwenden wir constructor , um einige Variablen zu definieren / initialisieren, aber wenn wir Aufgaben im Zusammenhang mit ngOnInit Bindungen haben, wechseln wir zu ngOnInit Lebenszyklus-Hook ngOnInit . ngOnInit wird direkt nach dem Konstruktoraufruf aufgerufen. Wir können die gleiche Arbeit auch im Konstruktor ngOnInit , aber es ist vorzuziehen, ngOnInit zu verwenden, um ngOnInit Bindung zu starten.

Um ngOnInit nutzen zu können, ngOnInit wir diesen Hook aus der Core Library importieren:

import {Component, OnInit} from '@angular/core'

Dann implementieren wir diese Schnittstelle mit exportierter Klasse (dies ist nicht obligatorisch, aber im Allgemeinen).

Beispiel für die Verwendung von beiden:

export class App implements OnInit{
  constructor(){
     //called first time before the ngOnInit()
  }

  ngOnInit(){
     //called after the constructor and called  after the first ngOnChanges() 
  }
}

Weitere Informationen finden Sie auch unter Unterschied zwischen Konstruktor und ngOnInit


Answer #2

Der erste (Konstruktor) bezieht sich auf die Klasseninstanziierung und hat nichts mit Angular2 zu tun. Ich meine, ein Konstruktor kann für jede Klasse verwendet werden. Sie können eine Initialisierungsverarbeitung für die neu erstellte Instanz ausführen.

Der zweite entspricht einem Lifecycle-Hook von Angular2-Komponenten:

  • ngOnChanges wird aufgerufen, wenn sich ein Eingabe- oder Ausgabebindungswert ändert
  • ngOnInit wird nach den ersten ngOnChanges

Sie sollten also ngOnInit wenn die Initialisierungsverarbeitung Ihrer Funktion auf Bindungen der Komponente beruht (z. B. mit @Input definierte @Input ), andernfalls würde der Konstruktor ausreichen ...


Answer #3

constructor() ist eine Typoskript-Funktion und wird für new SomeClass() . Der Konstruktor sorgt für die richtige Reihenfolge der Feldinitialisierung in Klassenhierarchien.

ngOnInit ist eine Angular2-Lebenszyklusmethode, die von Angular aufgerufen wird, wenn die Komponente erstellt und nachdem die Bindungen ausgewertet und die Eingaben das erste Mal aktualisiert wurden.

Siehe auch Unterschied zwischen Konstruktor und ngOnInit





ngoninit