Ich habe einen Angular 2 Controller, der so aussieht:
%Vor% Aber wenn sich der Wert von value
von einer Vorlagenbindung ändert:
Das valueChange
-Ereignis wird nicht ausgelöst. Obwohl die Vorlage korrekt aktualisiert wird und den neuen Wert anzeigt, weiß die Komponente nicht, dass sie geändert wurde.
Wie kann ich feststellen, wenn die Eingabeattribute auf meinem Controller geändert werden?
Meiner Meinung nach ist Output
dafür verantwortlich, dass Ihre Komponente ein Ereignis an andere ausstrahlt, damit sie ihre Ansicht bei Bedarf aktualisieren. Sie sollte nur für Änderungen verwendet werden, die intern gesendet werden (daher der Name Output
). ). Das Auslösen eines Output
-Ereignisses bei Input
-Änderungen kann zu unerwartetem Verhalten führen (wie jetzt, da valueChange
für alle internen und externen Änderungen und nicht wirklich für Output
ausgelöst wird).
In deinem Fall, wenn du Sachen machen willst, wenn sich dein value
ändert, kannst du es zu einem Setter machen:
Ich habe Setter verwendet, um zu erkennen, wenn Eingangsvariablen geändert wurden. Sie müssen den Schlüssel inputs
im @Component
decorator anstelle der @Input
-Deklaration verwenden, um dies wie folgt zu aktivieren:
Auch FYI, die Klassenmethode ist ngOnInit
anstelle von onInit
.
Ich konnte das Problem umgehen, indem ich from OnChanges
:
Dies löst automatisch das Ereignis Change
aus, wenn Angular eine Änderung erkennt ... aber gibt es eine Möglichkeit, dies nativ zu tun?
Tags und Links angular