Hasta ahora, con esta A2Grid y esta cuadrícula, estamos utilizando prácticamente todas las formas predeterminadas de mostrar data en la cuadrícula. Pero una característica muy poderosa que es posible que desees utilizar dependiendo de tu proyecto es poder reemplazar los renderizadores de celda individuales que tenemos aquí con tu propio componente Angular.
Hasta ahora, solo estamos utilizando una representación de cadena, pero podemos poner nuestro propio componente aquí. Y para demostrar eso, detengamos la aplicación y vamos a utilizar la CLI para generar un nuevo componente para nosotros y luego lo usaremos como renderizador de celda. Entonces hagamos ng generate cell. Así que eso nos ha creado nuestro componente.
Ahora, lo primero que debemos hacer antes de poder usarlo como renderizador de celda es implementar la interfaz de AG Grid. Yo, renderizador de celda, angular. Y esto tiene dos métodos que debemos implementar. Tienes refresh y también AGInit. AGInit es común en todos nuestros componentes, y es el método que AGGrid llama para inicializar tu componente, y se llamará antes de que se llame a ngInit. Así que es ligeramente diferente al ciclo de vida de Angular. Es nuestra forma de interactuar con tu componente después de haberlo creado para ti.
Así que déjame borrar esto por ahora. Inicia la aplicación nuevamente. Y luego, si volvemos a nuestro componente de la aplicación, vamos a decir para nuestra edad, en lugar de usar el renderizador predeterminado, usemos nuestro componente para renderizarlo. Así que usamos el renderizador de celda y le pasamos nuestro componente de celda. Y ahora, si te fijas bien, verás que ahora estamos viendo que la celda funciona y eso es porque eso es lo que tenemos en nuestra plantilla aquí.
Entonces eso no es particularmente útil, porque probablemente no quieras que aparezca lo mismo en cada celda. Entonces, ¿cómo lo actualizamos realmente? Aquí es donde entra en juego este agenet. Primero que nada, agreguemos un valor aquí, propiedad de valor. Podemos decir número porque lo estamos usando en la columna de edad y luego, lo obtendremos de los parámetros. Entonces, podemos tener un método, digamos, obtener valor o puedes obtenerlo directamente de los data y eso será el data de la fila. Así que hagámoslo por ahora. A veces puede ser nulo si estás haciendo agrupación de filas, lo cual mencionaré más adelante en la masterclass. Y luego diremos edad. Y luego podemos actualizar nuestra plantilla para usar ese valor. Y luego puedes ver que solo dice Agregar. Así que puedes ver que ahora estamos mostrando el valor tal como viene de los data de la fila. Espero que todo eso tenga sentido.
Ahora hay una cosa que podrías decir, bueno, hemos codificado mucho en este componente. ¿Qué pasa si queremos crear un componente de celda compartible que podamos usar en varias columnas, y eso es algo que es muy posible hacer. Entonces, por ejemplo, tal vez tuviéramos esto como edad. Ahora, si vamos a usar eso para la columna de atleta, eso no tendría sentido. Así que podríamos agregar el nombre aquí y agregar este renderizador de celda. componente y puedes ver que ahora hemos dividido el nombre actual, lo cual no es ideal, así que ahí es donde podríamos entrar aquí en lugar de usar data y podríamos usar la función obtener valor si tiene eso, obtener el valor, de lo contrario, lo dejaremos indefinido y al menos estamos obteniendo el valor correcto. Pero como puedes ver, esta etiqueta todavía está codificada. Entonces necesitamos una forma de parametrizar eso. Entonces, además de tener un renderizador de celda, también puedes pasar parámetros a tus renderizadores de celda. Y eso se hace en este formato, tienes parámetros del renderizador de celda y digamos que vamos a darle una etiqueta y la llamaremos bueno, solo diremos etiqueta y le daremos esto, esto sería ese nombre y luego podemos hacer lo mismo para la edad Y decir h. Y para usar estos parámetros, volvemos a nuestro componente de celda. Y luego agregaremos una etiqueta. Entonces, eso es una cadena. Y luego aquí. Entonces, esto sigue siendo etiqueta igual a params.label. Pero, como puedes ver, la interfaz de iCellRendererParams no tiene una propiedad de etiqueta porque esa es nuestra propia personalizada. Y entonces, lo que podemos hacer es definir una interfaz para nuestro componente de celda, que luego, ya sabes, le dice a las personas, en realidad, este componente entiende la siguiente interfaz. Y luego podemos usar eso aquí. Y la compilación ahora funciona. Y luego realmente lo usamos en nuestra plantilla.
Comments