Я использую абстрактный класс для общих настроек
export abstract class AgGridDatasource {
private _gridOptions: GridOptions = DEFAULT_GRID_OPTIONS;
private _gridApi: GridApi;
private _gridColumnApi: ColumnApi;
protected constructor(gridOptions: GridOptions) {
this._gridOptions = Object.assign({}, this._gridOptions, gridOptions);
}
refreshColumns(): void {
if (this._gridApi) {
this._gridApi.setColumnDefs(this.createColumns());
}
}
abstract createColumns(): AbstractColDef[];
onGridReady(event): void {
this._gridApi = event.api;
this._gridColumnApi = event.columnApi;
}
get gridOptions(): GridOptions {
return this._gridOptions;
}
get gridApi(): GridApi {
return this._gridApi;
}
get gridColumnApi(): ColumnApi {
return this._gridColumnApi;
}
}
Где выглядит DEFAULT_GRID_OPTIONS
export const DEFAULT_GRID_OPTIONS: GridOptions = {
localeText: AgGridLocaleText,
defaultColDef: AgGridDefaultColDef,
rowData: null,
suppressDragLeaveHidesColumns: true,
suppressNoRowsOverlay: false,
suppressLoadingOverlay: false,
loadingOverlayComponent: 'customLoadingOverlayComponent',
noRowsOverlayComponent: 'customNoRowsOverlayComponent'
}
И, наконец, мой класс сетки бесконечности с конструктором, где параметры сетки по умолчаниюможно переопределить
export abstract class AgGridInfinityDatasource<T> extends AgGridDatasource implements IDatasource {
protected constructor(gridOptions: GridOptions,
super(Object.assign({},
{
rowModelType: 'infinite',
pagination: false,
rowSelection: 'none',
suppressCellSelection: true,
cacheBlockSize: 100,
}
, gridOptions));
(other code)