Подтвердить что ты не робот

* ngFor, как связать каждый элемент в массиве с ngModel, используя индекс

=== окончательное обновление ==

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

поскольку я использую ngModel в форме, я должен добавить name.

и моя ошибка в том, что я использовал то же значение, что и его имя.

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

после того, как я перехожу к слабостям, моя проблема решена.

<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>

==========

извините, я не могу вспомнить, почему я использую имена [$ index].Name вместо x.Name.

возможно, лет назад я встречал какую-то ошибку, используя x.Name, а затем привык использовать индекс.

--- обновлено -----

Мне нужна встроенная таблица редактирования, двусторонняя привязка.

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

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

изначально страницы показывают:

blank text field; jim

blank text field; tom

после ввода "aaaaaa" в первом текстовом поле, он становится:

aaaaaa; aaaaaa

blank text field; tom

Я думаю, что страница первоначально показала бы:

jim; jim
tom; tom

поэтому, моя проблема в том, почему отсутствует начальное значение?

4b9b3361

Ответ 1

Это должно быть [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>

Ответ 2

в вашем случае sir, если вы используете * ngFor для цикла, тогда я не думаю, что вам нужен индекс. почему бы вам просто не использовать x.Name. здесь приведен модифицированный код.

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

или вы можете попробовать это

<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>