Как правильно связать массив с ngModel в угловых 4?

1

Предположим, что у меня есть массив [1,2,3]. Я хочу перебрать все элементы и привязать их к ngModel. Когда я запускаю этот код после изменения первого элемента, второй получает то же значение. В чем проблема?

<div *ngFor="let x of array; let i = index;">
    <input type="number" [(ngModel)]="x[i]">
</div>
  • 0
    Просто сделайте [(ngModel)]="x" должно работать
  • 0
    stackoverflow.com/questions/40863074/...
Теги:
angular
ngmodel

2 ответа

1
Лучший ответ

ngFor по умолчанию использует идентификатор объекта для сравнения значений, это прерывается, когда используются примитивные значения (число, строка, логическое значение), поскольку они изменяют идентификатор при изменении). Использование trackBy позволяет настроить ngFor для индексации вместо идентификатора:

<div *ngFor="let x of array; let i = index;trackBy:trackByIdx">
    <input type="number" [(ngModel)]="x[i]">
</div>
trackByIdx(index: number, obj: any): any {
  return index;
}
0

У меня была та же проблема, на которую ответил @Günter Zöchbauer год назад, я надеюсь, что это может помочь кому-то пройти таким образом:

Angular2 ngМодель внутри ngFor

Спасибо снова Гюнтеру!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню