“ICellRendererComp”类型上不存在属性“getFrameworkComponentInstance”

Joh*_*ith 6 typescript ag-grid angular ag-grid-angular

我正在尝试在 rowSelected 事件处理程序上获取单元格渲染器(Angular 组件)的实例:

onRowSelected($event) {
    var selectedRow = this.gridApi.getDisplayedRowAtIndex($event.rowIndex);
    var params = { columns: ['added'], rowNodes: [selectedRow]};
    var instances = this.gridApi.getCellRendererInstances(params);
    if (instances.length > 0) {
        var wrapperInstance = instances[0].getFrameworkComponentInstance();
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在编译角度应用程序 (ts) 时遇到错误:

“ICellRendererComp”类型上不存在属性“getFrameworkComponentInstance”

实现来自https://www.ag-grid.com/javascript-grid-cell-rendering-components/ 上的官方文档(找到访问单元渲染器实例)。

这是定义 public 的可能工厂方法getFrameworkComponentInstance。

这是意外情况,因为当我调试此方法时,我可以使用getFrameworkComponentInstanceon方法获取渲染器instances[0]。

Gil*_*iel 6

从我在ICellRenderer的接口中看到的,接口ICellRendererComp没有 getFrameworkComponentInstance 函数。

ICellRendererComp 的接口

我在 ag-grid-angular 方面做了很多工作,我发现有时,接口与对象中的真正内容(缺少函数/变量)无关。

问题主要是因为 tslint 不信任该方法,因为它不在接口中。为了解决这个问题,我创建了自己的自定义界面,它扩展了 ICellRendererComp 但带有函数。

在此处输入图片说明

这样,当您尝试调用您的实例时,您可以将其转换为您的界面。我尝试了很多东西,只有这对我有用。

在此处输入图片说明

  • 此解决方法有效。该问题与 tslint 无关,而是与 tsc 有关。仍在寻找其他解决方案或等待其他答案。谢谢! (2认同)