# 13.2 - PrimeNG

vamos a bajar primeNG

![](https://cdn-images-1.medium.com/max/1600/1*tZy0mfF4KuAsLuIbQNysgg.png)

npm install primeng — save

Vamos a agregar los css de primeng al CLI

Agregamos

> “../node\_modules/primeng/resources/themes/omega/theme.css”, “../node\_modules/font-awesome/css/font-awesome.min.css”, “../node\_modules/primeng/resources/primeng.min.css”

## Ahora si podemos empezar a programar <a href="#f66d" id="f66d"></a>

Lo primero que vamos a hacer es entrar a la web de primeng para ver que vamos a utilizar

[**PrimeNG**\
\_Edit description\_www.primefaces.org](http://www.primefaces.org/primeng/#/)

Supongamos que queremos agregar un boton ( esto pasa con casi todos los componentes de primeng por lo tanto es importante)

Para utilizarlo no basta con importarlo y usar los css.. si no que vamos a tener que importar los modulos que queramos utilizar…

Si señor … app.module.ts :D

y luego lo podemos utilizar directamente en nuestro html

![](https://cdn-images-1.medium.com/max/1600/1*cbNjW-4kVixFGPIxsYjPrw.png)

app.component.html

Y ya lo tenemos funcionado… pero si vemos un poco el html que ingresamos el texto de adentro del boton esta en el atributo label…

Exacto lo que pensabas… si leiste el post o miraste algo de angularmaterial, en realidad lo que estamos usando son componentes custom de primeng.. por eso tuvimos que importar el modulo y luego poder utilizarlo…

> Algo sumamente importante que a veces no lo vemos en la documentación es el tema de los import de los modules… todos los módulos de primeng es el nombre+module …y se deben importar para poder utilizar… capaz que es algo que le falta a la documentación y a veces uno no entiende porque no le funciona nada…

Juguemos un poco mas ..

Tenemos unos cuantas series de componentes para poder utilizar y no volvernos tan locos con algunas cosas….

En nuestro caso vamos a utilizar algunos para ver su buen funcionamiento… mas que nada vamos a ver:

El sistema grilla (cosa muy importante)

Los inputs para los formularios

Una “tabla” para poder mostrar datos filtrar paginas y demas..

## Grillas <a href="#c4c5" id="c4c5"></a>

![](https://cdn-images-1.medium.com/max/1600/1*PEs3owP9ef5qby7L3lFmvw.png)

Las grillas son realmente algo fácil de utilizar… Solo tenemos que indicar que vamos a tener un contenedor de grillas y después tenemos el modelo de 12 columnas

Como pueden ver en el código… el ui-g indica lo que seria el “iniciador” de la grilla… y luego los ui-{TAMAÑO}-{NUMERO} indica lo que van a ocupar en cada tamaño de la pantalla… el resto del css es para el ejemplo.

## Inputs <a href="#a8f5" id="a8f5"></a>

![](https://cdn-images-1.medium.com/max/1200/1*haDoqeHiOhiYU7sgFwHbag.png)

Tenemos una gran cantidad de componentes para inputs… los cuales están muy buenos para utilizar… por una cuestión de muestra … vamos a utilizar el password y el calendar…

### Password <a href="#ffd5" id="ffd5"></a>

Como bien les comente al principio del post, vamos a tener que importar los modulos que vayamos a utilizar… por lo tanto

Y luego lo podemos utilizar tranquilamente!

![](https://cdn-images-1.medium.com/max/1600/1*FhV5yd1kMX_R1f_45KrgSQ.gif)

No le puse el type password para que se pueda observar con que voy llenando y como muestra la “fuerza” del password.

Y por ultimo algo que es muy interesante es el manejo de las tablas responsive, con filtros y otras cosas…

Para eso voy a generar una json con datos ..

Y vamos a necesitar importar las tablas en nuestros modulos, tanto en el app.module.ts como en el componente

y ahora si la podemos empezar a utilizar

y esta parte de la tabla queda así

![](https://cdn-images-1.medium.com/max/1600/1*6SXjFlKQsiV9FXMisc61JA.png)

Ahora vamos a ponerle complejidad… por ahora lo único que hace es iterar el objeto y ponerlo …

Agregando una serie de inputs a nuestra tabla vamos a tener muchos beneficios…

> \[rows]=”10" \[paginator]=”true” \[pageLinks]=”3" \[rowsPerPageOptions]=”\[5,10,20]”

Con este código simplemente en nuestro html vamos a lograr esto…

![](https://cdn-images-1.medium.com/max/1600/1*cGkdRebsLrSLBX-lLYEImQ.gif)

le indicamos la cantidad de rows inicial, que vamos a paginar, cuantos “paginas” queremos ver y luego cuantas opciones de rows por pagina queremos y ya funciona.

Otra cosa muy importante en esta iteración de datos y tablas, es que sea responsive… y tenemos la solución para esto…

> \[responsive]=”true” \[stacked]=”stacked”

![](https://cdn-images-1.medium.com/max/1600/1*dizzWqsk_G59y3On9jdasQ.gif)

![](https://cdn-images-1.medium.com/max/1600/1*qCMTkEYE2w16IBvYDS-PjA.gif)

Uno de los ejemplos de filtros es el “arranca con” y de ahi podemos ver que funciona a la perfección y super rápido… ahora que tuvimos que hacer… si agregar un par mas de inputs … el html quedo así …

Realmente una vez que uno se acostumbra a importar los modulos de la ui que necesita termina siendo facil de utilizar…. hasta comodo para muchas cosas..


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://jorgeucano.gitbook.io/entendiendo-angular/capitulo-13-ui-angularmaterial-primeng/132-primeng.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
