Angular IDPStrong Junior
Модулі / Грид / AG Grid — коли він
🔥 0

Модуль 5 · урок 3 з 10

AG Grid — коли він

У таблиці ліда AG Grid згаданий як альтернатива Material. На робочих проєктах він трапляється часто, тож варто розуміти, що він дає, чого коштує і як відповісти, якщо спитають про вибір між ними.

Що це таке

AG Grid — це готовий грид промислового рівня. Не конструктор, як Material Table, а майже застосунок: він сам малює рядки, віртуалізує скрол, тримає стан колонок і має власний API на сотні методів.

import { AgGridAngular } from 'ag-grid-angular';

@Component({
  imports: [AgGridAngular],
  template: `
    <ag-grid-angular
      class="ag-theme-quartz"
      style="height: 100%"
      [rowData]="rows()"
      [columnDefs]="columns"
      [defaultColDef]="defaults"
      (gridReady)="onReady($event)" />
  `,
})
export class TaskGrid {
  rows = input.required<readonly Task[]>();

  protected readonly columns: ColDef<Task>[] = [
    { field: 'code', headerName: 'Код', sortable: true, filter: true, width: 140 },
    { field: 'title', headerName: 'Назва', flex: 1 },
    { field: 'status', headerName: 'Статус', cellRenderer: StatusBadge },
    { field: 'dueDate', headerName: 'Термін', valueFormatter: p => formatDate(p.value) },
  ];

  protected readonly defaults: ColDef = { resizable: true, sortable: true };
}

Одна різниця видна одразу: колонки описуються масивом обʼєктів, а не розміткою. Це зручно, коли колонки приходять із конфігу або від користувача, і незручно, коли потрібна складна верстка комірки — для неї доводиться писати окремий компонент-рендерер.

Що дає з коробки

МожливістьMaterial TableAG Grid Community
Сортування однією колонкоюТакТак
Багатоколонкове сортуванняПишеш самЗ коробки, Shift+клік
Віртуальний скролЧерез CDK, окремоЗ коробки
Зміна ширини колонок мишеюПишеш самЗ коробки
Перетягування колонокЧерез CDK, окремоЗ коробки
Фільтри в шапціПишеш самЗ коробки
Групування рядків, зведенняНіТільки Enterprise
Експорт в ExcelНіТільки Enterprise
Розмір бандлаНевеликийПомітно більший
ЛіцензіяMITCommunity безкоштовно, Enterprise платно
Питання ліцензії — не дрібниця

Найцікавіші можливості AG Grid — групування, зведені таблиці, серверна модель рядків, експорт — доступні лише в Enterprise-версії, і вона платна на розробника. На проєкті це рішення ухвалює не розробник, але знати межу варто: помилково пообіцяти замовнику групування «бо ми ж уже використовуємо AG Grid» — неприємна ситуація.

Як обрати

Material Table, коли
  • Колонок небагато й вони відомі наперед.
  • Потрібна складна верстка комірок у стилі продукту.
  • Дизайн-система вже на Material.
  • Важливий розмір бандла.
  • Це навчальний проєкт — видно, що відбувається всередині.
AG Grid, коли
  • Десятки тисяч рядків і без віртуалізації не обійтись.
  • Користувачі мають самі керувати колонками.
  • Потрібні групування, зведення, експорт.
  • Таблиця — це і є продукт, а не одна з його сторінок.

Що відповісти на дзвінку

«Для навчального проєкту я взяв Material Table: колонок небагато, потрібна своя верстка комірок, і мені було важливо самому реалізувати багатоколонкове сортування й пагінацію — це і був сенс завдання. AG Grid я б брав, якби потрібні були віртуалізація десятків тисяч рядків, керування колонками з боку користувача чи групування — але тоді варто одразу зважати, що частина цього тільки в платній версії.»

Така відповідь показує головне: ти не «вибрав те, що знав», а розумієш критерії вибору. Саме це й перевіряють, коли ставлять питання про бібліотеки.

Практично для IDP

Роби практику на Material Table. AG Grid тут дав би готове рішення для більшості пунктів таблиці — і саме тому не показав би нічого про твої вміння. Але цей урок пройди: питання «а чому не AG Grid» дуже ймовірне.