Angular: In Lifecycle Hooks-Dokumenten ist nicht klar, dass ngOnChanges nicht aufgerufen wird, wenn Eingaben nicht verwendet werden

Erstellt am 27. März 2018  ·  1Kommentar  ·  Quelle: angular/angular

Ich reiche ein...

[x] Documentation issue or request

Aktuelles Verhalten

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.

Erwartetes Verhalten

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

Minimale Reproduktion des Problems mit Anleitung

https://stackblitz.com/edit/angular-ngonchanges

Was ist die Motivation / der Anwendungsfall für die Verhaltensänderung?

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.

docs feature medium

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.

>Alle Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen