AgGrid RowData обновлен вне углового компонента, необходимо перерисовать строки - PullRequest
0 голосов
/ 29 апреля 2019

Я использую ag-grid-angular в своем проекте Angular.Мой компонент app содержит мою основную модель данных (rowData) и два подкомпонента grid и grid-details.Компонент grid имеет @Input для привязки к rowData и содержит компонент ag-grid-angular, с которым также связан rowData.Компонент grid-detail также имеет @Input для привязки к модели и имеет форму, в которой можно изменить rowData.

Я абстрагировал приложение в StackBlitz

Когда я изменяю данные в ag-grid-angular, я вижу изменения в rowData в app и grid-details, что подразумевает правильно связанные свойства компонентов.Когда я изменяю rowData в grid-details, я вижу изменение в app, но представление данных в ag-grid-angular не обновляется.При вызове gridApi для перерисовки строк данные отображаются правильно (это означает, что данные также были правильно связаны, поскольку мне не нужно было повторно устанавливать данные строк в gridApi).

  1. Если все данные правильно связаны, почему ag-grid-angular не обновляется автоматически?
  2. Что такое простой шаблон для вызова gridApi.redrawRows()?У меня есть несколько компонентов в моей фактической реализации, и я хотел бы, чтобы какой-то перехват всех onChange вместо реализации какого-либо @Output генератора событий для каждого подкомпонента.

Что я пробовал: я пытался реализоватьвызов gridApi.redrawRows() через Angular OnChanges, но я понимаю, что OnChanges ловушка жизненного цикла не вызывается при изменении значения в экземпляре rowData.Так что в моей ситуации OnChanges не вызывается при изменении данных в grid-details.

1 Ответ

0 голосов
/ 29 апреля 2019

Это звучит как нормальное поведение обнаружения угловых изменений.

Предположительно, ваша переменная rowData является массивом, а вы обновляете элемент в массиве.

Однако для обнаружения изменений сработаетвам нужно заменить экземпляр массива.Таким образом, вы можете, например, сделать что-то вроде

this.rowData = [...this.rowData]

...