Постановка проблемы:
В приведенной ниже демонстрации стекаблиц я могу динамически вставить FormGroup
в начале сетки, нажав кнопку Add
и вызвав событие (blur)
из одного элемента управления, чтобы обновить значение другого элемента управления, совместно использующего rowIndex
, Теперь проблема в том, что если я вставил несколько formGroups
и включил событие (blur)
на любом из недавно добавленных FormGroups
, он обновляет значение других элементов управления, а также имеет другие rowIndex
.
Действия по воспроизведению проблемы:
- Откройте демонстрационную ссылку ниже.
- Добавьте несколько строк (2 строки), нажав кнопку Добавить.
- Введите значение в поле имени 2-й вновь добавленной строки и сфокусируйтесь.
- Он обновляет поле возраста в новой добавленной строке, а не только во второй.
Демонстрация Stackblitz: https://stackblitz.com/edit/angular-oitz5j-4uezqr
Требование:
Выделите любое поле имени определенной строки. Поле Age в той же строке должно отображать случайное число, не затрагивая другие строки.
Что я пробовал до сих пор?
Пытался использовать метод Array unshift(), но получал ошибку
Свойство unshift не существует для типа FormArray
Попытался использовать метод FormArray.insert(). Он будет работать, если мы хотим добавить
FormGroup
по определенному индексу. Но он не может динамически вставить несколькоFormGroups
поверхFormArray
.
Обновление: Вышеупомянутая проблема работает нормально без Kendo Grid. Пожалуйста, проверьте демо ниже.
Демо: https://stackblitz.com/edit/angular-oitz5j-2a31gs
Связанные проблемы в github/stackoverflow:
https://github.com/angular/angular/issues/16322
Angular - форму массива push определенного индекса
Примечание: Если мы собираемся добавить элементы управления в конце сетки, она работает как чемпион. Пожалуйста, ознакомьтесь с приведенной ниже демонстрацией, которая прекрасно работает с последним добавлением элементов управления.