Básico #2 - Trasformando data 🗳🗂
En este desafío vamos a aprender sobre: Interpolación y pipes.
Last updated
En este desafío vamos a aprender sobre: Interpolación y pipes.
Last updated
Hora de aplicar lo aprendido, vamos a jugar con HTML, Css y Angular 😎 Realizaremos una aplicación que nos permita cambiar la manera en la que vemos la información en pantalla.
¡Aquí puedes encontrar el demo!
Entra a www.stackblitz.com, y verás algo como esto:
Ya dominas perfectamente el concepto de que es una variable 🤓vamos a crear las variables que van a contener la información que vamos a mostrar en nuestra aplicación. Copiaremos lo siguiente en el archivo app.component.ts.
Deberías hacer algo así, y tu resultado se deberá ver así:👇
Por si tienes alguna duda. Aquí te explicamos cómo funciona: 👷♀️
1. Vamos a crear una variable llamadaflipCard
para manejar un efecto muy lindo que tendremos de voltear el rectángulo donde pondremos nuestros datos a mostrar, dónde le asignaremos un valor booleano en false.
2. Vamos a crear una variable llamada today,
dónde le asignaremos el valor de una función propia de JavaScript que obtiene la fecha actual.
3. En la variable totalBill
vamos a almacenar un número con decimales.
4. Y finalmente en la variable text
vamos a almacenar una cadena de caracteres o también llamado dató string.
En esta parte vamos a crear la estructura HTML que le dará vida y estructura a la forma en que presentaremos los datos en pantalla. En este archivo llamado app.component.html vamos a reemplazar su contenido, por el siguiente código.
Deberías hacer algo así, y tu resultado se deberá ver así:👇
Por si tienes alguna duda. Aquí te explicamos cómo funciona: 👷♀️
1. En nuestro código HTML tenemos la etiqueta H1, que nos presenta el titulo de la aplicación.
2. Tenemos un <div>
que nos contiene una clase llamada "cardContainer", aquí meteremos toda la información que queremos mostrar.
3. Dentro de el <div>
que contiene la clase llamada "card", tenemos unas etiquetas que nunca habíamos visto.
3.1 la primera es [class.flipped]="flipCard" (será el responsable de darnos el efecto de girar una tarjeta), vemos la variable flipCard
que creamos anteriormente, que funciona así: cuando el valor es true en nuestra estructura HTML se adicionara la clase flipped, solo y solo si, la variable es true, si su valor es false entonces no nos va a adicionar la clase flipped en nuestra estructura HTML.
3.2 la segunda es (click)="onClickCard()" aquí capturaremos el evento click donde nos mostrará u ocultará la información con la data transformada o sin transformar dependiendo del caso. (en un siguiente paso veremos que contiene la función).
4. Ten presente los 2 comentarios que estás viendo que contienen
<!-- TODO: Aquí .... -->
porque estas líneas nos servirán de referencia para poner código en un siguiente paso.
Vamos a crear una función simple, pero poderosa 💪🏽con ella controlaremos el valor de nuestra variable flipCard. Adicionaremos en el archivo app.component.ts el siguiente código debajo de la declaración de variable text.
Deberías hacer algo así, y tu resultado se deberá ver así:👇
Por si tienes alguna duda. Aquí te explicamos cómo funciona: 👷♀️
1. La lógica de nuestra función onClickCard() manejara el valor de la variable flipCard
, this.flipCard = !this.flipCard;
haciendo esto almacenaremos en esta variable el valor contrario al que tiene originalmente, ejemplo:
Si el valor de flipCard
es true, con !this.flipCard
le asignamos un valor false.
Si el valor de flipCard
es false, con !this.flipCard
le asignamos un valor true.
Llego la hora de cambiar el contenido de nuestras variables, sin cambiar el contenido de nuestras variables 🤨💬what? 🥴¡sí! nuestro objetivo será mostrar el valor de nuestras variables, sin asignarle un valor diferente, solo modificaremos la forma en la que se ve el mismo valor en pantalla. En este archivo llamado app.component.html vamos a reemplazar la línea "<!-- TODO: Aquí colocaremos datos sin modificar -->", por el siguiente código.
Deberías hacer algo así, y tu resultado se deberá ver así:👇
En este archivo llamado app.component.html vamos a reemplazar la línea "<!-- TODO: Aquí colocaremos los mismos datos modificados -->", por el siguiente código.
Deberías hacer algo así, y tu resultado se deberá ver así:👇
Por si tienes alguna duda. Aquí te explicamos cómo funciona: 👷♀️
1. Recordemos el concepto de interpolación que es la forma de visualizar las variables en nuestra template (archivo HTML), utilizamos las llaves dobles {{}} donde en medio de ellas ponemos nuestra variable y de esta manera podremos verla en pantalla.
2. Los pipes son utilidades que nos permiten evitar programar varias veces la misma función, son funciones fáciles y muy pequeñas, estas pueden ser colocadas en cualquier parte de nuestra aplicación.
Podemos ver que un pipe en angular se activa usando |
y el nombre de la funcionalidad que deseas, ejemplo: «date»,
en este caso solo muestra la fecha pero podemos cambiar el formato.
3. Tipos de pipes que usaremos hoy:
* date: Fechas.
* currency: Monedas.
* number: Números.
* lowercase: Minúscula.
* uppercase: Mayúscula.
4. Podemos adicionar propiedades extra a nuestros pipes, por ejemplo:
date:'fullDate' el elemento fullDate me indica que deseo la fecha completa, también puedo poner 'shortDate' o simplemente el formato de fecha que deseo '"MM/dd/yy"'.
Nota: Lista de algunos pipes https://angular.io/api/common#pipes
Ya hicimos toda la lógica 🧠, ahora vamos a ponerle personalidad 👩🎨 Reemplaza el contenido de styles.css con el siguiente código:
Deberías hacer algo así, y tu resultado se deberá ver así:👇
🎉 ¡LO LOGRASTE! 🎉
Aquí puedes encontrar el ejercicio resuelto.
Con lo que aprendiste en el ejercicio de hoy, crea una nueva card, que contenga un pipe diferente a los usados hoy (aquí un pastelito https://angular.io/api/common#pipes), ponle el color que quieras 🎨👩🎨y asegúrate que cuando le des click las card se volteen de forma independiente (solo crea una variable que funcione como flipCard 😉).
Esta adición es para retar tu curiosidad, podrías proponer la solución que tu quieras.
Has completado los Trasformando data 🗳🗂 ahora vamos para nuestro siguiente desafío 👇
Nota:
Si necesitas ayuda con este ejercicio puedes contactar a:
Alejandra Giraldo Twitter: @maleja111 Correo: magiraldodevelop@gmail.com