Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

519
Views
La propiedad 'getFrameworkComponentInstance' no existe en el tipo 'ICellRendererComp'

Estoy tratando de obtener la instancia del procesador de celdas (componente angular) en el controlador de eventos de fila seleccionada:

 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(); } }

Desafortunadamente, aparece el error durante la compilación de la aplicación angular (ts):

La propiedad 'getFrameworkComponentInstance' no existe en el tipo 'ICellRendererComp'

La implementación proviene de la documentación oficial en https://www.ag-grid.com/javascript-grid-cell-rendering-components/ (busque Acceso a instancias de renderizador de celdas).

Aquí hay un posible método de fábrica que define getFrameworkComponentInstance público.

Es una situación inesperada porque cuando depuro este método puedo obtener el renderizador con el método getFrameworkComponentInstance en instances[0] .

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Por lo que vi en las interfaces de ICellRenderer , la interfaz ICellRendererComp no tiene la función getFrameworkComponentInstance.

Interfaces de ICellRendererComp

He trabajado mucho con ag-grid-angular y descubrí que, a veces, las interfaces no son relevantes para lo que realmente hay en el objeto (funciones/variables faltantes).

El problema se debe principalmente a que tslint no confía en el método ya que no está en la interfaz. Para solucionarlo, creé mi propia interfaz personalizada que amplía ICellRendererComp pero con la función.

ingrese la descripción de la imagen aquí

De esa manera, cuando intente llamar a su instancia, puede enviarla a su interfaz. He probado muchas cosas y solo esta me ha funcionado.

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Report

0

Estoy de acuerdo con las razones de la respuesta anterior, sin embargo, un enfoque más corto me ha ahorrado tiempo.
En lugar de crear una interfaz personalizada, lo siguiente me ha funcionado:

 if (instances.length > 0) { var cellRenderer: any = instances[0]; var wrapperInstance = cellRenderer.getFrameworkComponentInstance(); }
over 4 years ago · Santiago Trujillo Report

0

Desde v27 de AG Grid

Ya no necesita usar el método getFrameworkComponentInstance() , ya que su componente Angular se devolverá directamente desde getCellRendererInstances() . De modo que puede recorrer los componentes y llamar a sus métodos directamente.

 const instances = this.gridApi.getCellRendererInstances(params) as MyComponent[]; instances.forEach((instance) => { instance.myComponentFunction(); });

Consulte la documentación actualizada aquí: Procesador de celdas de componentes

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!