2017-11-08 4 views
0

Kann ich etwas mit der folgenden * ngFor-Schleife (siehe unten) tun, um die shared-text-input-Komponente neu initialisieren oder zurücksetzen? Das Problem, mit dem ich konfrontiert bin, ist, dass die Komponentenwerte nicht auf ihre Standardwerte zurückgesetzt werden, da die Komponente nicht zerstört oder neu initialisiert wird, wenn ein neuer Kontakt hinzugefügt/entfernt wird. Anfangs dachte es, weil die native DOM-Eingabe keinen eindeutigen Namen hatte, aber das war nicht der Fall. Ich bin mir bewusst, ich könnte Logik in die Shared-Text-Input-Komponente hinzufügen, um eine manuelle Rückstellung zu tun, aber ich möchte dies vorzugsweise vermeiden. Der Hauptgrund dafür ist, dass ich an anderen gemeinsam genutzten Eingabekomponenten arbeite, die das gleiche Problem haben, und das Zurücksetzen der Komponenten über das Angular-Framework ist eleganter, als manuell auf Änderungen zu warten und darauf zu reagieren.Angular 4 reinitialize ODER Reset-Komponente verschachtelt innerhalb ngFor Schleife

.Contact(*ngFor="let contact of contacts; let i = index;trackBy:ContactsChanged") 
    .ContactDetails.form 
     shared-text-input-component.InputComponent([value]="contact.model.value") 

(Mit PUG Templat)

+0

Die Komponente sollte sich selbst zerstören, wenn es das DOM verlässt, wenn es nicht dann Sie wahrscheinlich einige schlechte Codierung haben, haben Sie irgendwelche hängende Abonnement innerhalb Ihrer 'Shared-Text-Input-Komponente' ? Können Sie den Code für Ihre Komponente bereitstellen? –

+0

'shared-text-input-component' ist eine dumme Komponente und wird nur über Datenattribute weitergegeben. Angular ist clever mit dem diff und verwendet dieselbe Instanz, aber mit verschiedenen @Input-Werten, daher wird zerstört oder init nicht erneut aufgerufen. Ich möchte nicht auf Änderungen warten und erkunde eine Option, bei der die Komponente neu initialisiert wird, wenn das Kontakte-Array aktualisiert wird (Kontakt entfernt oder hinzugefügt) – ED92

Antwort

0

Jetzt arbeiten. trackBy Funktion zurückgeben undefined

Verwandte Themen