Ag-Grid onGridReady не получает параметры? - PullRequest
0 голосов
/ 29 апреля 2019

Я работал с ag-grid, и, просматривая другие примеры, я увидел следующий фрагмент кода, который люди используют для сохранения API ag-grid в качестве переменной для последующего использования.

HTML:

 template: `
<ag-grid-angular
  id="grid"
  style="width: 100vw;"
  [style.height] = 'height'
  class="ag-theme-balham ag-grid"
  [columnDefs]="columnDefs"
  [gridOptions]="gridOptions"
  (gridReady)="onGridReady($event)"
></ag-grid-angular>`

Машинопись:

onGridReady(params){
this.resizeGrid();
this.gridApi = params.api;
this.columnsApi = params.columnApi;}

Я пытался сделать что-то подобное, однако, когда я пытаюсь сделать то же самое, params показывается как "undefined". Я перепробовал все способы, чтобы попытаться получить API, но это просто не работает для меня. Моя сетка корректно загружается с данными, которые я ей передала, но она постоянно сообщает мне, что params.api не определен. Что мне здесь не хватает?

Ответы [ 2 ]

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

Удалось выяснить это после еще нескольких проб и ошибок, опубликовав решение на тот случай, если у кого-то возникнет такая же проблема.

Я вынул (gridReady) = "onGridReady ($ event)"из моего HTML-кода и добавил следующее в мое объявление GridOptions:

onGridReady: this.onGridReady.bind(this),

После этого я создал новый метод для установки API, который, кажется, работает просто отлично.

onGridReady(event: any){
this.gridApi = event.api;
this.gridApi.sizeColumnsToFit();
}
0 голосов
/ 29 апреля 2019

Можете ли вы попробовать удалить gridOptions из вашего HTML-шаблона

<ag-grid-angular
  style="width: 600px; height: 500px;"
  class="ag-theme-balham"
  [columnDefs]="columnDefs"
  [animateRows]="true"
  [pagination]="true"
  [sortingOrder]="sortingOrder"
  (gridReady)="onGridReady($event)"

></ag-grid-angular>

Примечание: Не использует gridoptions в приведенном выше шаблоне HTML.

А если вы хотите загрузить данные из API. В .ts файле

  onGridReady(params) {
    this.gridApi = params.api;
    console.log('grid api', params.api);
    this.gridColumnApi = params.columnApi;
    // const dataValue = [{firstName: 'Ragavan', age: 31}, {firstName: 'Mike', age: 50}];
    this.http.get('https://your-mock-url/params')
      .subscribe(data => {
          params.api.setRowData(data);
        }
      );
  }

Попробуйте приведенный выше код. Надеюсь, это сработает.

...