Ich habe eine ngFor-Schleife, die mehrere Listenelemente anzeigt. Jeder Listeneintrag enthält einen Titel. Es enthält auch eine Eingabe mit dem Titel darin, den ich verstecken möchte. Wenn ich eine Bearbeitungsschaltfläche drücke, möchte ich, dass die Eingabe für das ausgewählte Element angezeigt wird, keine der anderen. Was ist der beste Weg, um dies zu erreichen?Angular - Wie man Inhalte mit einem booleschen Wert für 'dieses' Element in einer ngFor-Schleife ein- und ausblendet
Unten ist was ich bisher habe. Wenn Sie jedoch "editItem" initialisieren und "bearbeitbar" auf "true" setzen, wird das Eingabefeld für alle Elemente angezeigt, nicht nur das, auf das ich geklickt habe.
editable = false;
editItem(){
this.editable = true;
}
<ul>
<li *ngFor="let item of items | async">
<div class="item">
<div class="title"> {{ item.item_title }}</div>
<input #newItemName type="text" [(ngModel)]="this.item.item_title" *ngIf="editable"/>
<i aria-hidden="true" (click)="editItem()"></i>
</div>
</li>
</ul>
würde Jede Hilfe sehr geschätzt :)
Dies wäre ein guter Platz, um die Listenelemente in eine separate Komponente zu abstrahieren. Wenn Sie das tun, wird Ihr Code funktionieren. – theOriginalJosh
Der beste Weg wäre, die Liste der Elemente in Ihrem TS abzurufen. Fügen Sie jedem Element auf der Clientseite 'editierbares' Feld hinzu. Items.forEach (item => item ['editable'] = false)' then '* ngIf =" item.editable "' –
Es ist einfach, bietet aber ein UI-Beispiel! Eingabe/s und Bearbeitungsschaltfläche (n). Wie funktionieren diese? Schaltfläche Bearbeiten erscheint nur für das ausgewählte Element? Wie ist das Element ausgewählt? – Marian07