Ich möchte Elemente in einer Reihenfolge hinzufügen/entfernen und sie in einem Array aggregieren lassen, um sie an das Backend zu senden. Die Daten werden wie folgt aussehen:Wie werden iterierte, Array-füllende Angular 2-Eingänge implementiert?
- Kundenname: Billy
- Bestellungen: [Pizza, Burger, Sushi]
wurden keine SO Antworten oder Dokumentation, die in iterierte Eingabe wird verbindlich. Hat jemand das versucht? Template-Code:
<div>
<input
type="text"
name="name"
title="name"
placeholder="Customer Name"
[(ngModel)]="customerName"/>
</div>
<div *ngFor="let item of itemsInNewOrder; let i = index">
<input
type="text"
name="order"
title="order"
[(ngModel)]="itemsInNewOrder[index]"/>
</div>
innerhalb der Klick-Funktion der New-Taste:
...firebaseStuff... .push({name: name, order: this.itemsInNewOrder})
leider funktioniert das nicht. Danke im Voraus! :)
Edit 1: Es gibt 2 Tasten, die (jeweils) auslösen:
incrementItemsInNewOrder() {
this.itemsInNewOrder.push("")
}
decrementItemsInNewOrder() {
this.itemsInNewOrder.pop()
}
D'oh! Das hat geklappt ... und ein neues Problem geschaffen. Die Daten werden erwartungsgemäß weitergeleitet, aber jedes Mal, wenn ein Zeichen in das hinzugefügte Feld eingegeben wird, wird die Auswahl des Felds aufgehoben, und es muss erneut in das Feld geklickt werden. Irgendwelche Ideen? –
Ich vermute, Winkel ändert einige Erkennung und im Prozess rendert die Eingabe erneut mit neuem Wert. – Kyrsberg
Die Antwort liegt in ngforms, gibt es eine Bibliothek gewidmet, um mit diesem Zeug zu tun: https://scotch.io/tutorials/how-to-build-nested-model-driven-forms-in-angular-2 –