У меня есть пользовательский компонент фильтра для столбца в моей сетке.Я заметил, что компонент фильтра не создается, пока я не нажму на значок фильтра в заголовке столбца.Это означает, что данные не фильтруются в соответствии с моими настройками по умолчанию (например, отфильтровывать записи, где status == StatusEnum.Complete
).
В качестве обходного пути я обнаружил, что могу получить экземпляр фильтра в событии onGridReady
, вызвав api.getFilterInstance('status')
, и это вызывает создание компонента фильтра и, следовательно, применение фильтрации по умолчанию.
Этот обходной путь кажется немного неуклюжим.Переменная filter
не используется в событии onGridReady
, которое вызывает предупреждения в IDE / сборке.Другой разработчик может прийти и удалить эту строку кода, думая, что в этом нет необходимости.
Есть ли лучший способ заставить мой пользовательский фильтр быть создан при создании сетки?Я использую AgGrid 17.1 и Angular 4.4.
Сетка настроена так:
gridOptions: GridOptions = {
enableFilter: true,
onGridReady: (event) => {
let filter = event.api.getFilterInstance("status"); // forces the filter component to be constructed
let data = this.loadAsyncData();
event.api.setRowData(data);
},
columnDefs: [
...
{
headerName: "Status",
field: "status",
filterFramework: MyCustomStatusFilterComponent,
filterParams: {
valueGetter: (obj) => { return obj.data.statusEnum; },
hideCompleteByDefault: true,
...
}
},
....
]
}
Я настроил пример, который демонстрирует проблему .Обратите внимание на «взлом» в строке 63 из app.component.ts
.