* ngFor comment lier chaque élément du tableau à ngModel en utilisant index

===finale mise à jour==

http://plnkr.co/edit/WKRBB7?p=preview

depuis que j'utilise ngModel dans une forme, je dois ajouter name attribut n'.

et mon erreur est que j'ai utilisé de la même valeur que son nom.

<form #myform="ngForm">
    <table>
      <tr *ngFor="let staff of staffs">
         <td><input name="name" [(ngModel)]="staff.name">{{staff.name}}</td>
      </tr>
    </table>
</form>

après avoir changé en belows, mon problème est résolu.

<form #my2form="ngForm">
   <table>
      <tr *ngFor="let staff of staffs;let i = index">
         <td><input name="staff.{{i}}.name" [(ngModel)]="staff.name">{{staff.name}}</td>
      </tr>
    </table>
</form>

==========

désolé, Je ne me souviens pas pourquoi j'utilise des noms[$index].Nom au lieu de X. Nom.

il y a peut-être des années que je rencontre une erreur en utilisant X. Nom, puis pris l'habitude d'utiliser index.

---mise à jour-----

j'ai besoin d'une table d'édition en ligne, bidirectionnelle.

<table>
   <tr *ngFor="let x of names">
     <td><input [(ngModel)]="x.Name">{{x.Name}}</td>
   </tr>
</table>

let names = [
{ Name:'jim'},
{ Name:'tom'}
];

initialement les pages montrent:

blank text field; jim

blank text field; tom

après avoir tapé 'aaaaaa' dans le premier champ de texte, il devient:

aaaaaa; aaaaaa

blank text field; tom

je pense que la page initialement voudrais montrer:

jim; jim
tom; tom

donc, mon problème est exactement pourquoi la valeur initiale est manquant?

11
demandé sur Jinceon 2017-01-14 19:50:11

2 réponses

Il faut [ngModel]="..."

<table>
   <tr *ngFor="let x of names;let i = index;">
     <td>{{ i+ 1 }}</td>
     <td><input [(ngModel)]="names[i].Name">{{x.Name}}</td>
   </tr>
</table>
6
répondu Günter Zöchbauer 2017-01-14 16:52:25

dans votre cas monsieur si vous utilisez * ngFor pour loop alors je ne pense pas que vous ayez besoin d'index. pourquoi tu n'utilises pas x?Nom. voici le code modifié.

<table>
       <tr *ngFor="let x of names;let i = index;">
         <td>{{ i+ 1 }}</td>
         <td><input [(ngModel)]="x.Name">{{x.Name}}</td>
       </tr>
    </table>

ou pouvez-vous essayer cette

<table>
           <tr *ngFor="let x of names;let i = index;">
             <td>{{ i+ 1 }}</td>
             <td><input [value]="x.Name" [(ngModel)]="x.Name">{{x.Name}}</td>
           </tr>
        </table>
4
répondu himanshu 2017-01-14 17:28:45