您如何在 ag-grid 模块中使用多个组件?

Posted

技术标签:

【中文标题】您如何在 ag-grid 模块中使用多个组件?【英文标题】:how do you use multiple components in an ag-grid module? 【发布时间】:2021-02-12 07:45:47 【问题描述】:

我正在尝试使用 ag-grid 和模块将数据集放在单独的组件上。

与教程相反,它显示仅在应用程序模块中导入导入 AgGridModule...

 import  AgGridModule  from 'ag-grid-angular';

然后像这样把数据放到app组件中……

 columnDefs = [
         field: 'make' , sortable: true,
         field: 'model' , sortable: true,
         field: 'price', sortable: true 
    ];
    rowData = [
     make: 'Toyota', model: 'Celica', price: 35000 ,
     make: 'Ford', model: 'Mondeo', price: 32000 ,
     make: 'Porsche', model: 'Boxter', price: 72000 ,
    ];

然后将标签组件放入html应用页面并放入所需的属性。

我想知道/希望这可以通过应用模块中的某些内容来完成,如下所示:

  AgGridModule.withComponents([CarsComponent, 
  TrucksComponent
  ]),

然后在每个组件中放入所需的数据,例如,在 CarsComponent 中

export class CarsComponent implements OnInit  ..../
columnDefs = [
     field: 'make' , sortable: true,
     field: 'model' , sortable: true,
     field: 'price', sortable: true 
];
rowData = [
     make: 'Toyota', model: 'Celica', price: 35000 ,
     make: 'Ford', model: 'Mondeo', price: 32000 ,
     make: 'Porsche', model: 'Boxter', price: 72000 ,
 ];

然后在 TrucksComponent ...

export class TrucksComponent implements OnInit  ..../
   columnDefs = [
     field: 'make' , sortable: true,
     field: 'model' , sortable: true,
     field: 'price', sortable: true 
    ];

  rowData = [
     make: 'Chevy', model: 'Silverado', price: 38000 ,
     make: 'Ford', model: 'F350', price: 41000 ,
     make: 'Dodge', model: 'Ram', price: 36500 
   ];

然后像这样在每个 HTML 组件文件中放置单独的 ag-gr-d 标签...

              <ag-grid-angular
              style="width: 500px; height: 220px;"
              class="ag-theme-alpine"
              [rowData]="rowData"
              [columnDefs]="columnDefs">
              </ag-grid-angular>

这可以吗?我是在正确的轨道上,还是只是假设它以这种方式工作?我在 ag-grid 网站上找不到真正清晰的文档或引用此内容的示例。

我将该信息添加到预期的 Cars 组件之一 - 组件中的 rowData 和 HTML 中的 ag-grid 模板框,并收到以下错误:

   ERROR in src/app/carsprods/carsprods.component.html:28:30 - error TS2339: Property 'rowData' does not exist on type 'CarsprodsComponent'.

28                   [rowData]="rowData"
                                ~~~~~~~
  src/app/carsprods/carsprods.component.ts:6:15
    6   templateUrl:'carsprods.component.html',
                    ~~~~~~~~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component CarsprodsComponent.
src/app/carsprods/carsprods.component.html:29:33 - error TS2339: Property 'columnDefs' does not exist on type 'CarsprodsComponent'.
 [columnDefs]="columnDefs">
                                   ~~~~~~~~~~
  src/app/carsprods/carsprods.component.ts:6:15
    6   templateUrl:'carsprods.component.html',
                    ~~~~~~~~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component CarsprodsComponent.

【问题讨论】:

【参考方案1】:

当你说

 AgGridModule.withComponents([CarsComponent, TrucksComponent])

这意味着这些组件将被使用BY ag-grid;可以作为cellRenderer、编辑器组件、过滤器组件等。

如果你想使用ag-gridWITHIN你的CarsComponentTrucksComponent,那么你不需要用AgGridModule.withComponents声明它们。

【讨论】:

哦,真的吗?那么您可以将 ag-grid(甚至是模块)与其他组件一起使用吗?即您可以重置每个组件中的 JSON 数组并提供给相应的 HTML 页面?我理解正确吗? 所以我将基本的 rowData 和 colDefs 数组添加到组件中,并将 Ag 网格框添加到 HTML 页面并得到此错误:我在原始帖子中添加了上述错误。 我会被诅咒的!我得到了它的工作!谢谢,帕里托什。不过,我的构造函数确实有一个问题。我想知道我是否应该在这里发布,或者创建一个与 Angular 相关的新线程,因为它似乎更倾向于 Angular 而不是 Ag-grid 组件。

以上是关于您如何在 ag-grid 模块中使用多个组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 redux 或组件函数中处理 AG-Grid API 操作?

如何跳过应用到 ag-grid 组件的具体化 css 文件

如何在 React 函数组件(useState 挂钩)中访问 ag-Grid API?

如何在我的 ag-grid 单元格中放置一个 react jsx 组件

如何在使用“inRange”过滤器类型的 ag-grid 中创建自定义浮动过滤器组件

用 tinymce 编辑器替换单元格的 ag-grid 编辑器