angular - Propriedade 'getFrameworkComponentInstance' não existe no tipo 'ICellRendererComp'
Estou tentando obter a instância do renderizador de célula (componente Angular) no manipulador de evento rowSelected:
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();
}
}
Infelizmente, eu recebo o erro durante a compilação da aplicação Angular (ts):
A propriedade 'getFrameworkComponentInstance' não existe no tipo 'ICellRendererComp'
A implementação vem da documentação oficial em https://www.ag-grid.com/javascript-grid-cell-rendering-components/ (veja Acessando Instâncias de Renderizador de Células).
Aqui está um possível método de fábrica que define o público getFrameworkComponentInstance.
É uma situação inesperada porque, quando depuro este método, posso obter o renderizador com o método getFrameworkComponentInstance em instances[0].
Resposta #1
Pelo que vi nas interfaces do ICellRenderer, a interface ICellRendererComp não possui a função getFrameworkComponentInstance.
Eu trabalhei muito com ag-grid-angular e descobri que, às vezes, as interfaces não são relevantes para o que realmente está no objeto (faltando funções/variáveis).
O problema é principalmente por causa do tslint, que não confia no método já que ele não está na interface. Para resolver isso, eu criei minha própria interface personalizada que estende o ICellRendererComp, mas com a função.
Dessa forma, quando você tentar chamar sua instância, você pode convertê-la para sua interface. Eu tentei muitas coisas e apenas isso funcionou para mim.
Resposta #2
Concordo com os motivos na resposta acima, no entanto, uma abordagem mais curta me economizou tempo.
Em vez de criar uma interface personalizada, o seguinte funcionou para mim -
if (instances.length > 0) {
var cellRenderer: any = instances[0];
var wrapperInstance = cellRenderer.getFrameworkComponentInstance();
}


