Zu Demonstrationszwecken habe ich diesen simplen Angular App erstellt, die Benutzer eine Liste von Personen machen können: https://plnkr.co/edit/1RFGlXgHLwik02MvbhCz?p=previewWas ist falsch an dieser Winkelform, die dazu führt, dass ausgewählte Werte in der Benutzeroberfläche unerwartet zurückgesetzt werden?
Vorlage:
<form #peopleForm="ngForm">
<div *ngFor="let person of people">
Name: <input type="text" name="name" placeholder="Name" [(ngModel)]="person.name">
</div>
</form>
Komponente:
export class App {
people = [
{
name: 'Bob',
},
{
name: 'Alice',
}
];
constructor() { }
addPerson() {
this.people.push({name: ''});
}
}
Es hat zwei Bugs :
- Listenelemente werden in der Benutzeroberfläche zurückgesetzt, wenn „Add Person“ Button geklickt Namen
- Die letzten Benutzers wird zweimal
ich die zugrunde liegende JSON haben auch auf die Seite gedruckt wird, und es sieht richtig, aber der Rest der UI ist falsch . Kann mir jemand sagen, was ich falsch mache?
Update: Aus irgendeinem Grund funktioniert es wie erwartet, wenn ich das äußere <form>
Tag entferne. Wer weiß warum?
Das ist Einwegbindung. Ich brauche eine Zwei-Wege-Bindung. Sehen Sie sich die JSON und die Liste der Personen unterhalb des Formulars in Ihrem Beispiel an. Es wird nicht aktualisiert. – Stewart
check my update – JayDeeEss