Ich habe eine benutzerdefinierte Komponente erstellt, die ich in eine for-Schleife eingefügt habe, z
<div *ngFor="let view of views">
<customcomponent></customcomponent>
</div>
Die Ausgabe davon wird sein:
<customcomponent></customcomponent>
<customcomponent></customcomponent>
<customcomponent></customcomponent>
Ich würde gerne wissen, wie ich mithilfe der @ viewchild-Syntax oder anderer Mittel einen Verweis auf diese Komponenten erhalten kann, wenn die Anzahl dieser Komponenten variieren kann
wenn der Komponente ein Name gegeben werden kann, z
<customcomponent #compID></customcomponent>
Ich kann es dann wie folgt referenzieren:
@ViewChild('compID') test: CustomComponent
Wie verweise ich darauf, wenn dies nicht der Fall ist, z. B. wenn möglicherweise ein Index verwendet wird?
(Diese Frage bezieht sich nicht auf die Verwendung von ElementRef gemäß anderen Fragen, die zuvor gestellt wurden, wie aus den unten aufgeführten Antworten hervorgeht.) Diese Frage bezieht sich auf den Zugriff auf mehrere @ ViewChild und die Verwendung von Listenabfragen.
AfterViewChecked
und schreibe die MethodengAfterViewChecked
. Diese Methode wird bei jedem Änderungszyklus ausgelöst, nachdem die Ansicht aktualisiert wurde. Darin können Sie testen, ob Ihre viewChild-Instanz definiert wurde. Siehe die DokumenteVerwenden Sie den @ ViewChildren-Dekorator in Kombination mit QueryList. Beide sind von "@ angle / core"
@ViewChildren(CustomComponent) customComponentChildren: QueryList<CustomComponent>;
Mit jedem Kind etwas zu tun sieht so aus:
this.customComponentChildren.forEach((child) => { child.stuff = 'y' })
Weitere Informationen finden Sie unter angle.io, insbesondere unter https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#sts=Parent%20calls%20a%20ViewChild
quelle