2017-01-28 1 views
1
erwartet funktioniert nicht
<tr *ngFor="let p of personen; let i=index"> 
      <td> <input [(ngModel)]="p.Vorname" name="p.Vorname" type="text" class="form-control" required ></td> 
      <td> <input [(ngModel)]="p.Nachname" name="p.Nachname" type="text" class="form-control" required ></td> 
      <td> <input [(ngModel)]="p.Geburtsdatum" name="p.Geburtsdatum" type="date" class="form-control" required ></td> 
      <button (click)="premove(i)" type="button" class="btn btn-danger">Entfernen</button> 
     </tr> 

Wenn ich ein neues Element mitDatabinding ngFor * Eingabe in der Tabelle als

this.personen.push(new Person()) 

Daten in meinem Array ‚personen‘ hinzuzufügen, ist in Ordnung, aber meine Eingabefelder auf meiner Seite sind als leer angezeigt.

+0

Jeder Fehler im Browser consoleß –

+0

nein, kein Fehler vorhanden ist. – user7482814

Antwort

1

Sicherstellen, dass die name Eigenschaft ist einzigartig:

<tr *ngFor="let p of personen; let i=index"> 
     <td> <input [(ngModel)]="p.Vorname" name="Vorname{{i}}" type="text" class="form-control" required ></td> 
     <td> <input [(ngModel)]="p.Nachname" name="Nachname{{i}}" type="text" class="form-control" required ></td> 
     <td> <input [(ngModel)]="p.Geburtsdatum" name="Geburtsdatum{{i}}" type="date" class="form-control" required ></td> 
     <button (click)="premove(i)" type="button" class="btn btn-danger">Entfernen</button> 
    </tr> 
+0

Das hilft nicht - das gleiche Verhalten. – user7482814

+0

Ich habe meine Antwort aktualisiert. Ich denke, es ist die Namenseigenschaft. Sie können nicht mehrere Eingaben mit demselben Namen haben. –

+0

Weitere Untersuchung: Die Objekte auf der Seite scheinen die gleichen zu sein. Ich habe zwei Klassen hinzugefügt (ng-valid und ng-invalid) und sehe, dass alle Elemente in derselben Spalte dieselbe Klasse haben. ng-reflect-name ist gleich. Ich denke, das ist das Problem. "personen [i] .Vorname" ist statisch und wird nicht als "personen [0] .Vorname", "personen [1] .Vorname" usw. berechnet. – user7482814