[x] Documentation issue or request
Die Lifecycle Hooks- Seite sagt dies über ngOnChanges()
:
aufgerufen vor
ngOnInit()
und immer dann, wenn sich eine oder mehrere datengebundene Eingabeeigenschaften ändern
und das über ngOnInit()
:
genannt [...] nach den ersten
ngOnChanges()
Aus dieser Beschreibung geht nicht hervor, dass ngOnChanges()
_nicht_ aufgerufen wird, wenn die Komponente verwendet wird _ohne_ Eingaben bereitzustellen.
In der Dokumentation sollte das Verhalten von ngOnChanges()
klarer sein: Insbesondere wenn eine Komponente über deklarierte Eingaben verfügt, die jedoch nicht verwendet werden, wird ngOnChanges()
_nicht_ vor ngOnInit()
aufgerufen
https://stackblitz.com/edit/angular-ngonchanges
Nach den Dokumenten zu urteilen, könnte man den Eindruck haben, dass ngOnChanges()
für eine Komponente mit Eingaben immer zuerst vor ngOnInit()
aufgerufen wird, auch wenn diese Eingaben nicht von der übergeordneten Vorlage/Komponente verwendet werden.
Dies kann zu nicht so offensichtlichen versehentlichen Fehlern führen, wie zum Beispiel das Entfernen von ngOnInit()
wenn es die Startlogik einer Komponente aus ngOnChanges()
dupliziert.
Das hat mich auch gerade erwischt.
Die Dokumentation kommt wirklich so rüber, als ob ngOnChanges eine Voraussetzung für das Auslösen von ngOnInit ist, es macht auch nicht klar, dass ngOnChanges möglicherweise überhaupt nicht ausgelöst wird, wenn keine Daten gebunden sind. In Wirklichkeit zeigt es nur die Reihenfolge an, in der sie aufgerufen werden, nicht dass sie miteinander in Beziehung stehen, ausgelöst werden oder nicht.
Wäre toll, wenn das geklärt würde.
Hilfreichster Kommentar
Das hat mich auch gerade erwischt.
Die Dokumentation kommt wirklich so rüber, als ob ngOnChanges eine Voraussetzung für das Auslösen von ngOnInit ist, es macht auch nicht klar, dass ngOnChanges möglicherweise überhaupt nicht ausgelöst wird, wenn keine Daten gebunden sind. In Wirklichkeit zeigt es nur die Reihenfolge an, in der sie aufgerufen werden, nicht dass sie miteinander in Beziehung stehen, ausgelöst werden oder nicht.
Wäre toll, wenn das geklärt würde.