【问题标题】:How to render multiple ag-grid in single component using Angular 6如何使用 Angular 6 在单个组件中渲染多个 ag-grid
【发布时间】:2020-04-30 09:25:44
【问题描述】:

我在 html 页面中有多个 ag-grid,我想在组件中获取 ag-grid 的特定行值。

html

 <ag-grid-angular #agGrid1 style="width: 1250px; margin-left: 5px ; height:120px;background-color: #CFD8DC;"
    class="ag-theme-balham" [rowData]="rowsData1" [columnDefs]="cols" rowSelection="multiple"
    [enableCellChangeFlash]="true">
  </ag-grid-angular>

 <ag-grid-angular #agGrid2 style="width: 1250px; margin-left: 5px ; height:120px;background-color: #CFD8DC;"
    class="ag-theme-balham" [rowData]="rowsData2" [columnDefs]="cols2" rowSelection="multiple"
    [enableCellChangeFlash]="true">
  </ag-grid-angular>

组件.ts

  @ViewChild('agGrid1', { static: true }) agGrid: AgGridAngular;
  @ViewChild('agGrid2', { static: true }) agGrid2: AgGridAngular;

  getRowsData() {

      this.selectedRows1 = this.agGrid.api.getSelectedRows();
      this.selectedRows2 = this.agGrid2.api.getSelectedRows();
     console.log( this.selectedRows1,  this.selectedRows2)

  }  

在这里我试图获取两个 ag-grid 行的值,但我得到:

ERROR TypeError: Cannot read property 'api' of undefined error.

【问题讨论】:

标签: angular ag-grid-angular


【解决方案1】:

完成 Ag-Grid 设置

我已经尝试了下面的代码,绑定网格正确的方式

在您的 HTML 文件中

<ag-grid-angular style="width: 500px; height: 500px;" class="ag-theme-balham" [rowData]="rowData"
    [columnDefs]="columnDefs" [rowSelection]="rowSelection" (selectionChanged)="onSelectionChanged($event)"
          (gridReady)="onGridReady($event)"
>
</ag-grid-angular>

<ag-grid-angular style="width: 500px; height: 500px;" class="ag-theme-balham" [rowData]="rowData"
    [columnDefs]="columnDefs" [rowSelection]="rowSelection" (selectionChanged)="onSelectionChanged($event)"
          (gridReady)="onGridReady1($event)"
>
</ag-grid-angular>

在 app.component.ts 文件中

private gridApi;
  private gridColumnApi;
  private gridApi1;
  private gridColumnApi1;
  rowSelection = "single";
  columnDefs = [
    { headerName: "Make", field: "make" },
    { headerName: "Model", field: "model" },
    { headerName: "Price", field: "price" }
  ];
  rowData = [
    { make: "Toyota", model: "Celica", price: 35000 },
    { make: "Ford", model: "Mondeo", price: 32000 },
    { make: "Porsche", model: "Boxter", price: 72000 }
  ];
  onSelectionChanged() {
    var selectedRows = this.gridApi.getSelectedRows();
    var selectedRows1 = this.gridApi1.getSelectedRows();
    console.log(selectedRows);
    console.log(selectedRows1);
  }
  onGridReady(params) {
    this.gridApi = params.api;
    this.gridColumnApi = params.columnApi;
  }
  onGridReady1(params) {
    this.gridApi1 = params.api;
    this.gridColumnApi1 = params.columnApi;
  }

我能够在onSelectionChanged() 方法中获得网格的两个值

这是输出屏幕

希望对你有帮助

如果您对以上内容有任何问题,请告诉我

谢谢

【讨论】:

  • 嗨,kushal,感谢您的回复,我会尝试更新您。
  • @Kushal:我们可以在一个组件中添加 n 个 ag 网格吗?提前谢谢。
  • 是的@Prasad,我们可以在一个组件中添加 n 个网格,您只需为每个网格创建不同的 gridOption。
【解决方案2】:

您的代码看起来不错。您只是打错了:将 @ViewChild('agGrid'... 替换为 @ViewChild('agGrid1'...,因为这是您在 HTML 模板中输入的名称。

【讨论】:

    猜你喜欢
    • 2018-12-02
    • 2021-02-16
    • 2019-05-19
    • 2020-06-11
    • 2021-11-03
    • 2023-03-21
    • 2021-02-12
    • 2019-01-13
    • 2019-01-02
    相关资源
    最近更新 更多