Динамически снимать / вставлять FormGroup в FormArray - PullRequest
3 голосов
/ 25 сентября 2019

Постановка задачи:

В приведенной ниже демонстрации stackblitz я могу динамически вставить FormGroup в начале сетки, нажав кнопку Add и вызвав (blur) событие от одного элемента управления, чтобы обновить значение другого элемента управления, совместно использующего тот же rowIndex.Теперь проблема в том, что если я вставил несколько formGroups и включил событие (blur) на любом из вновь добавленных FormGroups, он обновляет значение других элементов управления, а также имеет другие rowIndex.

Stackblitz Demo: https://stackblitz.com/edit/angular-oitz5j-4uezqr

Действия по воспроизведению проблемы:

  • Откройте демонстрационную ссылку ниже.
  • Добавитьнесколько строк (2 строки), нажав на кнопку Добавить.
  • Введите значение в поле имени 2-й вновь добавленной строки и сфокусируйтесь.
  • Обновляет поле возраста в обоих новыхдобавлена ​​строка, а не только во второй.

Требование:

Вкладка в любое поле имени определенной строки, поле Возраст в той же строке должно отображатьслучайное число без влияния на другие строки.

Что я пробовал до сих пор?

  • Пытался использовать массив 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 - указатель формы массива, специфичный для индекса

Примечание: Если мы собираемся добавить элементы управления в концеСетка, она работает как чемпион.Пожалуйста, проверьте приведенную ниже демонстрацию, которая прекрасно работает с добавлением элементов управления в последнюю очередь.

Демо: https://stackblitz.com/edit/angular-oitz5j-aszrjq

1 Ответ

0 голосов
/ 28 сентября 2019

проблема в кендо-сетке.вы снова и снова наступаете на индекс 0 своего источника данных, и кто знает, что он будет делать внутри для отображения данных.но верно то, что он не использует значение массива формы.если вы извлечете из массива кендо сетку, то будете работать нормально, или если вы добавите в конец вашего метода onFocusOut консольный журнал console.log(this.createForm.get("items").value);, вы увидите, что значение formArray в порядке.

Если вам нужно использовать да или да кендо сетки.прочитайте следующий документ:

https://www.telerik.com/kendo-angular-ui/components/grid/editing/editing-reactive-forms/

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...