программная настройка agGrid - PullRequest
0 голосов
/ 29 сентября 2018

Я только начал внедрять ag-grid в своем приложении.

Я хочу настроить его программно, я хочу поместить весь код, связанный с конфигурацией agGrid, в отдельную функцию в Helper.ts .

Я хочу использовать эту функцию во всех моих приложениях для настройки agGrid, чтобы я мог управлять agGrid из одного места.

Ниже приведен код для этого, но выглядит такне работает:

Код класса помощника:

   public ConfigureAgGrid(gridOptions: GridOptions): GridOptions {
         rowSelection: 'multiple',
         gridOptions.columnDefs = columnDefs;
         gridOptions.rowData = data;
         onSelectionChanged: this.onSelectionChanged,
        gridOptions.api.sizeColumnsToFit();

        return gridOptions;
    }

Код компонента:

onGridReady(gridOptions: GridOptions) {
    this.helperService.ConfigureAgGrid(gridOptions);
}

Ответы [ 2 ]

0 голосов
/ 14 августа 2019

Я использую абстрактный класс для общих настроек

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)
0 голосов
/ 29 сентября 2018

С веб-сайта ag-grid Иногда событие gridReady grid может сработать до того, как компонент Angular будет готов его получить, поэтому в среде Angular безопаснее полагаться на AfterViewInit, а не использоватьAPI.

...