Curso acelerado de Angular | Karthikeya T | Skillshare
Buscar

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Curso acelerado de Angular

teacher avatar Karthikeya T, For Your Learning Needs

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      0101Qué es Angular

      7:53

    • 2.

      0102 NodeJS vs Angular

      5:43

    • 3.

      0103 Configuración del entorno de desarrollo

      7:35

    • 4.

      0104 Componentes en angular

      3:32

    • 5.

      0105 Creación de proyectos angulares con tutoría de proyectos

      7:34

    • 6.

      0106 Creación de componentes angulares y lanzamiento de la aplicación

      5:33

    • 7.

      0107 Demo de aplicación de publicaciones de Facebook

      1:03

    • 8.

      0108 Interpolación de enlace de datos y enlace de propiedades

      6:26

    • 9.

      0109 Directivas que usan NgFor para mostrar publicaciones

      6:19

    • 10.

      0110 Visualización de comentarios de publicaciones

      2:46

    • 11.

      0111 Manejo de eventos

      6:58

    • 12.

      0112 Encuadernación bidireccional para agregar comentarios a una publicación

      7:05

    • 13.

      0113 Mini clase de SCSS

      6:28

    • 14.

      Mensaje rápido

      1:30

    • 15.

      0114 Diseñar nuestra aplicación de publicaciones con SCSS

      1:29

    • 16.

      0115 Servicios angulares

      3:13

    • 17.

      0116 Configuración de endpoint y entrega de datos

      2:48

    • 18.

      0117 Obtención de datos del servicio

      5:08

    • 19.

      0118 Suscripción a datos y población

      4:51

    • 20.

      0119 Directivas personalizadas angulares Directivas de Strucutal y Attibute

      8:45

    • 21.

      0121 Tubos en tubos angulares empotrados Tubos personalizados

      2:35

    • 22.

      0122 Enrutamiento en carga angular y perezosa

      11:05

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

368

Estudiantes

1

Proyectos

Acerca de esta clase

El curso intensivo de angular cubrirá casi todos los conceptos de angular (enumerados a continuación). Angular es un framework de front-end popular que nos ayudará a desarrollar aplicaciones de página única para varios navegadores y cross-paltform.

Si eres un profesional de TI, Angular es una tecnología que debes conocer.

Contenidos que se tratan en este curso intensivo de Angular,

Qué es
Angular?Configuración del entorno de desarrollo Angular Parte
1Configuración del entorno de desarrollo Angular
Parte 2Configuración adicional en Windows
ng-new
Webpack
JIT vs AOT en Angular
ngServe
Incluyendo marco de Bootstra
pComponentes angulares
Unión de datos angular
Unión de
eventos angularUnión de propiedades e intercambio de datos entre componentes
Servicios en Angular
Inyección de dependencias en Angular Parte 1
Inyección de dependencias en
Angular 2Mód
ulos angularRout
ing Angular Cliente HTTP

Conoce a tu profesor(a)

Teacher Profile Image

Karthikeya T

For Your Learning Needs

Profesor(a)

Habilidades relacionadas

Desarrollo Herramientas de desarrollo Angular
Level: Beginner

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. 0101Qué es angular: ¿Qué es angular? Angular es un marco para construir aplicaciones dinámicas de una sola página. Obviamente, si eres principiante, esta definición puede no estar teniendo sentido completo. Entonces, para darle sentido a esta definición, comencemos entendiendo cómo funciona una aplicación web simple. Digamos que has visitado un sitio web de comercio electrónico y has ingresado a este oral shop.com slash ElectronC tal vez acabas de hacer clic El navegador enviaría entonces la solicitud al servidor solicitando lista de artículos electrónicos. El servidor procesaría la solicitud y luego podría consultar la base de datos solicitando lista de registros, que en este caso son electrónicos. Una vez recuperada, devolvería la respuesta al cliente o al navegador. Ahora, allá por los días, solíamos usar tecnologías como php, asp.net, RubonRails o jango para generar dinámicamente el STML y enviarlo de vuelta al cliente o al navegador Entonces este STML tiene los datos que se envuelven con STML necesario o lógica de presentación para que pueda renderizarse en el navegador Pero hay muchos problemas con este enfoque. ¿Puedes pausar el video e intentar hacer una conjetura? En primer lugar, tendremos problemas con el rendimiento porque generar STML dinámico es muy intensivo en recursos, y si hay una gran cantidad de tráfico llegando al servidor, va a exigir muchos recursos, impactar el rendimiento, aumentar el costo, y eventualmente podría afectar experiencia del usuario también porque las páginas web podrían estar renderizando muy lento. Podría haber cierta latencia. Otro tema que podemos pensar es la complejidad de la base de código. Los desarrolladores back-end tienen que escribir código para generar STML dinámicamente, y esto aumentará la complejidad de la base de código y por lo tanto, la capacidad de mantenimiento de la base de código Además, los desarrolladores de back end también necesitan aprender tecnologías front-end para hacer su trabajo. En tercer lugar, y lo más importante, habría problemas de compatibilidad. Ahora, TML puede ser entendido por un navegador, pero ¿y si el cliente es una aplicación móvil ¿O qué pasa si alguna otra aplicación quiere leer los datos? Bueno, si una aplicación está solicitando datos, no podemos enviarles HTML. Tienen que hacer ese trabajo adicional de eliminar toda la parte de la presentación, eliminar todas las etiquetas TML y extraer los datos, lo cual no es nada práctico Entonces, ¿tenemos una solución a este problema? Bueno, ¿qué tal si solo enviamos los datos y dejamos que el cliente se encargue de la parte de presentación? ¿Eso resolvería el problema? Echemos un vistazo. Entonces, en lugar de enviar STML, ahora enviaríamos JSON Si te estás preguntando qué es JSON, simplemente datos en un formato estandarizado que todos los demás clientes están dispuestos a entender. Por ejemplo, si estamos solicitando una lista de electrónica, entonces la respuesta JSON del servidor podría verse algo así, y todos los clientes están equipados para entenderlo. Por ejemplo, los desarrolladores de aplicaciones móviles podrían escribir algún código, que pasará por este JSON y extraerá los datos que necesitan. Del mismo modo, alguna otra aplicación puede usar algunas bibliotecas existentes para leer fácilmente los datos de la respuesta JSON. Y hoy en día, todas estas tecnologías de supervisión como Java, jango, PHP, node JS, que es una elección muy popular estos días solo están enviando datos JSON, y no les molesta generar tamicamente o incluir lógica de presentación en Pero aquí tenemos un problema. Este JSON puede ser leído por aplicación móvil o alguna otra aplicación o algún otro cliente. Pero ¿qué pasa con los navegadores? No podemos mostrar de inmediato estos datos JSON en el navegador y esperar el usuario tenga una muy buena experiencia. Quieren ver los datos de una manera visualmente agradable, y quieren poder interactuar con la aplicación con enlaces, botones, formularios, etcétera Así que todavía necesitamos tener HTML, CSS y JavaScript en alguna parte para que podamos lograrlo. ¿Cómo logramos eso? Echemos un vistazo. Entonces digamos que el usuario ha visitado shop.com. En el momento en que el cliente visita ese sitio, el navegador enviaría la solicitud al servidor solicitando el archivo Index SML Esta vez, el servidor respondería con todos los archivos TML CSS y JavaScript que alguna vez necesites Y para todas estas solicitudes posteriores, sólo va a responder con solo los datos en formato JSON. Cuando visitas un sitio web tradicional, cada vez que haces clic en un enlace o vas a una página en particular, el navegador vuelve a cargar toda la página, enviando una solicitud al servidor y obteniendo una nueva página TML en No obstante, en este caso, el navegador carga toda la estructura de la aplicación, HTML, CSS, JavaScript, todo solo una vez. Después de eso, cuando haces clic en un enlace o navegas por las páginas, la página no se vuelve a cargar En su lugar, la aplicación actualiza dinámicamente el contenido usando JavaScript. Actualiza dinámicamente el contenido o datos JSON utilizando el JavaScript, que ya está presente. Entonces, esencialmente, actúa como una aplicación de una sola página. Al igual que tienes una aplicación móvil ejecutándose en Android, vas a tener esta aplicación construida usando TML, CSS y JavaScript en un navegador Y al igual que tu aplicación móvil no necesita una recarga cada vez que interactúas con ella. Incluso esto no requiere la recarga de la página cada vez que el cliente interactúa con la aplicación en el navegador Algunos de los ejemplos de aplicaciones de una sola página son Facebook, LinkedIn, Twitter y hay muchos otros. Instagram también es una aplicación de una sola página. medida que te desplazas por la publicación, no vas a ver que la página se vuelve a cargar Eso es porque está funcionando en este modelo. La primera vez que visitas facebook.com, ya ha descargado todos los TML CSS y JavaScript requeridos Y para todas las solicitudes posteriores, servidor solo está respondiendo con los datos en formato JSON, y se está poblando en diversos componentes usando JavaScript. La verdadera pregunta es, ¿cómo vamos a construir estos HTML CSS y JavaScript? ¿Vamos a usar literalmente SML CSS y JavaScript para construir estas aplicaciones No tiene sentido. Va a tomar una cantidad inimaginable de esfuerzo, tiempo y energía, y es simplemente imposible Ahí es donde entra en imagen angular. Angular es un marco. Lo que es el framework es solo un montón de bibliotecas o código preescrito, lo que hará que la vida del desarrollador sea fácil que no tengan que escribir TML CSS y JavaScript desde cero Utilizamos angular para construir estas aplicaciones dinámicas de una sola página. Si quieres construir un auto, no tiene sentido que construyas todos y cada uno de los componentes desde cero. Desea obtener componentes de varios proveedores y ensamblarlos de la manera que desee. Del mismo modo, vas a usar angular framework para construir las aplicaciones como desees. Espero que tenga sentido. Te veré a continuación. 2. 0102 NodeJS vs Angular: Realmente importante entender la diferencia entre angular y nodo J, porque a menudo pensamos en los nodejs como algo que va del lado del servidor y angular es algo que va del lado del cliente Sin embargo, necesitamos nodejs para poder construir o desarrollar aplicaciones angulares De hecho, ya sea cualquier tipo de aplicación JavaScript como nodejs react, o incluso ver Necesitamos nodejs para poder construir o desarrollar esas aplicaciones Entonces intentemos entender el papel del nodo JS en el desarrollo angular. Angler es algo que va del lado del cliente, que significa que es una aplicación JavaScript que se ejecuta en Browser Por otro lado, nodejs se ejecuta en el servidor, y tanto NodeJS como pescaDeJS son aplicaciones JavaScript, y sí necesitan tiempo de ejecución de JavaScript para poder ejecutarse Para aplicaciones pescadoras, tenemos navegador que ejecuta JavaScript. Sin embargo, para el nodo js, tenemos nodejs runtime para que podamos implementar nuestra aplicación en ese entorno, y luego pueda comenzar a servir la Ahora, hasta el momento, nodejs no tiene ningún tipo de papel en angular No necesitamos nodejs para poder ejecutar aplicaciones angulares Browser ya está haciendo ese trabajo. Sin embargo, para construir aplicaciones angulares, necesitamos nodejs Para entender esto mejor, echemos un vistazo a cómo se desarrolla e implementa realmente la aplicación nodejs desarrolla e implementa realmente Entonces, antes que nada, tienes que instalar nodejs en tu máquina local, y luego normalmente tiendes a ejecutar estos comandos Ahora bien, estos no son una lista exclusiva de comandos, sino solo para darte una idea, voy a mostrar algunos comandos que podríamos ejecutar mientras desarrollamos aplicaciones nodejs En primer lugar, después de instalar el nodo JS, podrías en este comando NPM en él, que inicializará el proyecto e introducirá el paquete dot js en archivo con alguna información básica Por lo que básicamente podría pedirte que ingreses la descripción del nombre del proyecto, así sucesivamente y así sucesivamente. Después de eso, también podrías instalar Express. Instalar Express es prácticamente un estándar hoy en día porque viene con algunos códigos y bibliotecas preescritos, que podemos usar de inmediato Por ejemplo, nos facilita la introducción de ruteo, manejo de solicitudes, respuestas, etcétera Y también podrías instalar mecanografiado. Esta también es prácticamente una práctica estándar para usar mecanografiado en lugar de JavaScript sin procesar porque mecanografiado es como una versión evolucionada de Hará que nuestro trabajo sea mucho más fácil. Entonces, una vez que instalas mecanografiado, comenzarías a escribir el código, y después de eso, tendrías que traducir esos archivos mecanografiados en archivos Javascript equivalentes para que la inscripción de nodejs o nodejs Javascript, la inscripción en tiempo de ejecución pueda o nodejs Javascript, la inscripción en tiempo comenzarías a escribir el código, y después de eso, tendrías que traducir esos archivos mecanografiados en archivos Javascript equivalentes para que la inscripción de nodejs o nodejs Javascript, la inscripción en tiempo de ejecución pueda ejecutarlo. Entonces, una vez que haces eso, en realidad podrías probar las cosas con NPM start. Y una vez que estés bien con todo, implementarás esa aplicación en el servidor de producción, y luego podrá comenzar a resolver la solicitud. Viniendo a angular, sin embargo, no podemos usar estos comandos de asentimiento Just porque la forma se manejan los proyectos angulares es un poco diferente de la forma en que se manejan los proyectos Jz de asentimiento Por ejemplo, la estructura del proyecto va a diferir en caso de angular. Entonces, para ejecutar comandos anglo específicos, necesitamos otra herramienta llamada CLI angular Necesitamos tenerlo instalado en nuestra máquina local. Y la forma en que lo vamos a instalar es ejecutando el comando NPM. Entonces todos estos comandos que comienzan con NPM son comandos específicos de nodejs Para instalar CLI angular, primero necesitamos tener instalado el nodo JS Sólo entonces podremos ejecutar realmente este comando. De hecho, la CLI angular en sí fue escrita usando JavaScript, y sí necesita algo de tiempo de ejecución de JavaScript JavaScript para poder ejecutarse por sí mismo Y una vez más, esa inscripción es el nodo JS. Así que incluso para desarrollar aplicaciones angulares, primero tenemos que instalar Node js en nuestra computadora local. Después vamos a seguir adelante e instalar CLI angular, lo que nos permitirá ejecutar algunos comandos anglo específicos Después de instalar CLI angular, puede ejecutar comandos anglo específicos Por ejemplo, el motor U, y luego vas a mencionar el nombre del proyecto, creará una estructura básica del proyecto con todos los paquetes básicos y bibliotecas que necesitamos para comenzar a desarrollar aplicaciones angulares. Técnicamente se puede hacer todo esto sin instalar Anglo CLI, pero ese es un proceso muy doloroso Por eso tenemos anglo CLI para facilitar nuestro trabajo. Va a hacer mucho trabajo pesado por nosotros. Y entonces podrías comenzar a escribir código en mecanografiado, y luego vas a servir a la aplicación para probar cosas, y luego eventualmente construirás la aplicación, y luego eventualmente construirás la aplicación, que esencialmente traducirá todos esos archivos mecanografiados JavaScript equivalente porque eso es lo que lo Y luego lo vas a mantener en algún lugar del servidor. Cada vez que alguien visita tu sitio, el servidor enviaría todos esos archivos y los carga en el navegador. Ahora lo clave para entender aquí es que en caso de nodejs, necesitamos nodejs no sólo para desarrollar o construir la aplicación, sino también para ejecutar realmente la aplicación en el lado del servidor Mientras que en el caso del pescadero, vamos a necesitar el nodo J para construir o para desarrollar la aplicación angular, pero realmente no lo necesitamos para ejecutar la aplicación angular en producción porque tenemos navegador que está haciendo ese trabajo. Espero que tenga sentido. Te veré a continuación. 3. 0103 Configuración del entorno de desarrollo: Configurar la inscripción de desarrollo para angular es muy sencillo. Implica estos tres pasos. En primer lugar, vamos a instalar Node js, y después vamos a usar el comando nodejs para instalar CLI angular para que podamos comenzar ejecutar los comandos anglo Y entonces necesitamos algún editor de código fuente, una herramienta robusta que nos ayude a escribir, construir y depurar el código de manera más eficiente en comparación con un bloc de notas estándar El código de Visual Studio hace ese trabajo. Veamos cómo se hacen todos estos. Entonces esta es la página oficial de nodjs isndjs.org, y ya podemos ver Si haces clic en él, va a descargar el Instalador, y luego podrás instalar NodeJS, tal como instalarías cualquier otro software Es muy sencillo. Sin embargo, si quieres tener un mejor control sobre cómo quieres descargar, puedes ir a la pestaña Descargar y luego aquí podemos instalar y configurar el nodo JS usando un gestor de paquetes, o podemos usar un instalador preconstruido como el que acabamos de ver, o simplemente podemos descargar los binarios e instalarlos Y si quieres, también podemos descargar el código fuente. Este enfoque sencillo es, por supuesto, utilizar un instalador preconstruido. Tendrías que elegir la versión que deseas descargar y el sistema operativo. Pero si quieres cambiar la versión, nosotros podemos hacerlo. Si estás trabajando para una empresa corporativa, entonces es recomendable que elijas una de las versiones LTS LTS significa soporte a largo plazo. Por lo que todas las versiones que estén etiquetadas como LTS recibirán soporte y mantenimiento de la comunidad No Jess durante varios años después de su lanzamiento Entonces estos son lanzamientos más estables, pero para fines de aprendizaje, podemos ir con la última y la mejor versión. Voy a elegir la versión más reciente y dar clic en Descargar. Ya lo he descargado y está ahí en mi escritorio. Pero si quieres ponerte más aventurero, podemos ir con la opción de administrador de paquetes, y por defecto, ha elegido F&M significa fast Node Entonces, si quieres usar Fast Node Manager para instalar Node JS, entonces todo lo que necesitas hacer es ejecutar todos estos comandos en la herramienta de línea de comandos de Windows o usando PowerShell Pero antes de ejecutar estos comandos, es necesario tener instalado el administrador de paquetes de Windows o Wind get. Se puede obtener fácilmente de la Tienda Windows. Una vez que instale el Administrador de paquetes de Windows, puede ejecutar todos estos comandos para instalar rápido Node Manager, y luego configurar nroment finalmente descargar Si eres principiante, solo tienes que ir con el instalador. No hay que seguir este enfoque. Pero tal vez se esté preguntando ¿por qué queremos usar administrador de paquetes en comparación con solo instalar el nodo JS usando un instalador? Bueno, F&M nos dará cierta flexibilidad de cambiar entre diferentes versiones de nodo Por ejemplo, si estás probando compatibilidad y quieres probarla en una versión diferente del nodo JS, F&M te lo pondrá muy fácil Con sólo ejecutar un par de comandos, podemos cambiar a una versión de nodo diferente. Básicamente nos salvará de tener que desinstalar y reinstalar una versión diferente del nodo JS Pero si eres principiante, lo más probable es que no quieras hacer nada así. Sólo tienes que descargar el instalador e instalar Node js. También tenemos un montón de otras opciones aquí. Si quieres instalar Node JS en un contenedor Docker, entonces estos son todos la lista de comandos que necesitamos ejecutar y esto instalaría Node JS Una vez que haya descargado el instalador, basta con hacer doble clic sobre él. Deje todo a su defecto, acepte la licencia y termine la instalación. Final de golpe. Una vez instalado para verificar nuestra instalación, iniciemos la línea de comandos Parcial o Windows con privilegios de administrador. Es muy importante que lances tu Poial con privilegios administrativos Si presionas la tecla Mayús y haces clic derecho en la pantalla, posible que veas la opción de iniciar Pill, pero esto no es con privilegios de administrador. Así que vamos a hacer clic en la tecla de Windows y luego buscar PowerShell Haga clic derecho sobre él, haga clic en Ejecutar como administrador. Entonces esto ha abierto el shell de energía de Windows. Verifiquemos si nuestro nodo JS está instalado. Voy a decir nodo guión B, B para versión, y ha mostrado la versión Y de manera similar, también voy a comprobar para NPM significa gestor de paquetes de nodo Es usando esta herramienta vamos a instalar todos los paquetes que necesitamos en nuestro proyecto. Ahora bien, este comando ha fallado porque por defecto, por razones de seguridad, powershell no nos permitirá ejecutar ningún guion Para solucionarlo, tenemos que cambiar nuestra política de ejecución. Primero averiguaremos la política de ejecución. Y actualmente está configurado para restringido. Vamos a cambiar eso a irrestricto para que podamos ejecutar scripts usando parciales Voy a decir que sí escribiendo Y. Despejemos la pantalla e intentemos ejecutar el comando una vez más. Y se ha exhibido. Lo siguiente que vamos a hacer es instalar CLI angular, y el comando para ello es que vamos a usar node package manager para instalar CLI angular con una opción global Con la opción hyphen G, estamos diciendo que queremos instalar CLI angular globalmente para que podamos ejecutar los comandos angulares desde cualquier directorio Si no establecemos esto a global, entonces CLI angular solo se limita al directorio actual Si desea instalar algún paquete que esté limitado a un proyecto en particular, entonces no queremos usar la opción guión G. Podemos mantenerlos locales. Sin embargo, queremos que la CLI angular esté disponible para todos los proyectos en todos los directorios Entonces queremos establecer esto a global con esta opción guión G. Y luego vamos a especificar CLI angular Esto debería instalar anglo CLI, y va a llevar algún tiempo Ahora, verifiquemos si anglo CLI está instalado ejecutando el comando angular Esa es la versión de guión NG. Y ha mostrado la versión, lo que significa que hemos instalado con éxito Angular CLI A continuación, vamos a instalar Visual Studio Code, y este es el sitio web oficial de Visual Studio Code. Esto es muy sencillo. Todo lo que tienes que hacer es descargar el instalador y luego instalarlo. Una vez hecho esto, así es como debería verse el código de Visual Studio. Espero que tenga sentido. Te veré a continuación. 4. 0104 Componentes en ángulo: Entonces, ¿qué son los componentes en angulo? Echemos un vistazo. Imagina que esta es tu página de Facebook. Ahora, esta página está compuesta por varios bloques, o por el momento, llamémoslos componentes de la interfaz de usuario. Por ejemplo, podríamos estar teniendo un componente llamado fotos que mostraría tus fotos, y luego podrías estar teniendo un componente llamado A, que habla de ti. Y entonces podríamos tener otro componente llamado pose que mostraría tu pose. También podemos tener componentes dentro de otro componente. Por ejemplo, el componente de poste podría estar compuesto por un par de componentes llamados crear publicación y publicación de visualización. Crear publicación te permitiría crear una publicación, y la publicación de visualización solo mostrará la última publicación, y la pose de visualización se actualizaría dinámicamente a medida que nos desplazamos por la página. Eso significa que a medida que nos desplazamos por la página, vamos a ver nuevas publicaciones que se llenan, y todos estos componentes podrían estar residiendo en un componente maestro. Ahora, tengo una pregunta para ti. ¿Qué se necesita para construir estos componentes? Tomemos Componente de pose de visualización, por ejemplo. ¿Qué se necesita para construir ese componente? Te voy a dar una pista. HTML porque eso es lo que entiende el navegador. De lo contrario, no estaríamos viendo nada en el navegador. ¿ Qué más necesitamos? Styling, por supuesto, necesitamos CSS o algo similar para que sea visualmente atractivo. Y luego también necesitamos datos, que a menudo se obtienen del servidor Y entonces también necesitamos la lógica o el código que le daría algo de inteligencia al componente. Por ejemplo, el usuario puede querer interactuar con el componente presionando el botón Me gusta o el usuario puede querer enviar un comentario. Siempre que el usuario ingrese el texto y haga clic en enviar o agregar comentario, ejecutaría la lógica subyacente o el código se ejecutaría la lógica subyacente o el código para que ese comentario se agregara en el post. La combinación de todos estos, la vista que es TML y CSS, datos y lógica es lo que es componente angular Un componente angular estaría compuesto de todos estos para que cuando ejecutemos nuestra aplicación, vamos a ver que estos componentes se cargan. La mejor manera de entender el componente angular es echando un vistazo a un código de muestra. Ahora, obviamente, este no es un código completo. Esto es solo para darte una idea de qué es el componente angular. Esta comprende de la vista, que es la combinación del TML y CSS Aquí estamos tratando de señalar un archivo TML y un archivo CSS Así que todo el estimul y CSS requeridos para este componente en particular estarían residiendo en estos archivos Y entonces también tenemos la lógica subyacente que daría algo de inteligencia al componente. Ejemplo, en caso de display post, podríamos estar teniendo un método llamado post que tendrá algún código para decir qué pasaría si el usuario pulsa un botón Me gusta. Entonces también podríamos tener otro método llamado add comment definiendo lo que sucedería si el usuario agregara un nuevo comentario. Los datos serían obtenidos del servidor, lo que no estamos viendo en este código en particular, pero definitivamente lo exploraremos en el final de la línea Pero espero que tengas una idea de qué es el componente angular. Cuando vayamos por el ejemplo, lo vas a entender aún mejor. Te veré a continuación. 5. 0105 Creación de proyectos angulares con tutorial: Bien, veamos cómo podemos crear nuestro primer proyecto pescadero Y para eso, vamos a lanzar nuestro código de Visual Studio, y luego tenemos que lanzar el terminal. Podemos usar el terminal que ya forma parte de Visual Studio Code, o también podemos usar cualquier herramienta de línea de comandos como la línea de comandos de Windows, PowerShell, etcétera Siempre y cuando puedas ejecutar comandos anglo desde esa herramienta, deberíamos ser buenos Para iniciar el terminal en código de Visual Studio, debemos hacer clic en terminal en el menú y luego dar clic en Nueva terminal. También he creado una nueva carpeta en mi Windows, donde vamos a alojar todos nuestros proyectos angulares. Voy a copiar su ruta, y vamos a ir a ese directorio. Voy a hacer CD significa directorio de cadena, y voy a pegar la ruta. Así que ahora estamos en ese directorio recién creado, y aquí es donde vamos a crear nuestro nuevo proyecto angular. El comando para crear un nuevo proyecto angular es NG Nuevo. Y luego vamos a especificar el nombre del proyecto. Simplemente voy a llamarlo como mi app. Ahora aquí tenemos un montón de opciones. Te recomendaría usar SCSS. SCSS es como una versión evolucionada de CSS. Si estás familiarizado con CSS, puedes entender fácilmente SCSS E incluso si no sabes nada de estilo, puedes entenderlo fácilmente a medida que avanzamos en este curso. Entonces, por ahora, escojamos la opción SCSS y pulsemos Enter o Return Ahora nos está preguntando si queremos habilitar renderizado del lado del servidor y la generación del lado estático. Vamos a explorar estos más adelante, pero voy a tratar de darte una idea de cuáles son estos. Normalmente, cuando visitas una página web construida con angular, el navegador descarga todo el Javascript y luego construye la página en tu computadora. El servidor acaba de enviar los datos. Eso se llama renderizado del lado del cliente, y el renderizado del lado del cliente se usa más comúnmente. El renderizado del lado del servidor o SSR funciona como sitios web tradicionales donde la página se construye primero en el servidor y la estimación completa se envía al navegador Ahora, hay pros y contras de ello, que exploraremos más adelante, pero la mayoría de las veces preferimos la renderización del lado del cliente. La generación de sitios estáticos o SSG nos permitirá generar archivos TML estáticos para nuestro sitio web cuando construyamos nuestro proyecto Y estos archivos estáticos se sirven luego directamente a los usuarios, lo cual es rápido porque no hay necesidad de esperar a que el servidor construya nada. Funciona como sitio web estático y es útil para un sitio web de documentación donde todas las páginas están preconstruidas como archivos TML Pero como dije antes, en la mayoría de los casos, si es de aplicación angular, vamos a utilizar ninguno de estos. Usaríamos el renderizado predeterminado del lado del cliente. Pero por ahora, podemos decir que sí a esta opción para que Angler incluya todas las configuraciones requeridas para estas Y por si queremos usarlos, podemos usarlos. Entonces vamos a decir que sí escribiendo Y y luego pulsamos Enter. Ahora, esto va a tomar un tiempo para crear el proyecto. Déjame pausar el video y volver atrás una vez que esté hecho. Bien, nuestro proyecto ya está creado, y si vas al Explorador de Proyectos, vemos una opción para importar una carpeta o carpeta abierta, da clic en ella. Vamos a volver a ir al directorio y elegir el proyecto angular que acabamos de crear. Da click en él y haz clic en Seleccionar Carpeta. Entonces esto va a importar nuestro proyecto, y esta es la típica estructura angular del proyecto. Déjame guiarte rápidamente a través de lo que estamos viendo aquí. Entonces primero de, tenemos el directorio SRC. Aquí es donde vive el código real para la aplicación angular. Contiene los componentes de la aplicación, los servicios, las teselas, los activos y los archivos de configuración. Exploremos sus principales subcarpetas y archivos muy rápido. Entonces tenemos esta carpeta de aplicaciones, y aquí es donde tenemos el componente raíz. Entonces todos los archivos que comienzan con componente app dot son todos correspondientes al componente raíz. El archivo app dot component dot Ts es el archivo mecanografiado del componente raíz Y al igual que con cualquier otro componente, está apuntando a su correspondiente archivo de plantilla o STML y también a su URL de estilo correspondiente Entonces este es el STML y este es su archivo de estilo correspondiente Además de la carpeta de aplicaciones, también tenemos un montón de otros archivos. Por ejemplo, el archivo main dot TS es como el punto de entrada para nuestra aplicación. Básicamente arranca el módulo root o el módulo app Y luego también tenemos el archivo HTML índice, que contiene la propia aplicación pescador, y este es el archivo que se sirve cada vez que alguien visita nuestro sitio web por primera vez También tenemos su archivo de estilos correspondiente. Y luego tenemos el archivo JSON de punto angular. Este es el archivo de configuración principal para la CLI angular. Básicamente define la configuración para construir, probar y servir la aplicación. Así que aquí es donde podemos configurar varias opciones de compilación y configurar qué activos, estilos y scripts están incluidos, etcétera Vamos a explorar todo esto más adelante. Y luego también tenemos el paquete dot JSON. Este archivo contiene metadatos sobre el proyecto, incluyendo dependencias y scripts Así que tenemos dependencias que se requieren durante el tiempo de ejecución. Entonces también tenemos un montón de dependencias que necesitamos para el desarrollo, pero no necesariamente se requieren durante el tiempo de ejecución Por ejemplo, anglo CLI es algo que necesitamos para el desarrollo y las pruebas, pero no durante el Otro archivo importante istsconft punto Json. Es un archivo de configuración de TypeScript que define cómo mecanografiado Puedes cambiar estas opciones de compilador dependiendo de tu necesidad Y luego también tenemos los módulos de nodo. Este directorio contiene todas las dependencias, bibliotecas y paquetes instalados vía NPM Normalmente no tienes que modificar nada aquí. Se genera automáticamente. También hay un montón de otros archivos, pero no tenemos que prestar atención a esos archivos ya que no van a agregar ningún valor a nuestro proyecto o a nuestro aprendizaje. Entonces esa es una visión general rápida de lo que tenemos en el proyecto anglo Vamos a explorar todo esto en detalle en un momento posterior, pero por ahora, espero que esto nos haya dado un buen comienzo para comenzar a escribir nuestro código. Te veré a continuación. 6. 0106 Creación de componentes angulares y lanzamiento de la aplicación: Echemos un vistazo a cómo podemos generar o crear un nuevo componente en angular, y luego también te guiaré través de lo que va dentro de un componente. Entonces el comando para crear o generar un nuevo componente es NG generar componente, y luego vas a dar el nombre para el componente. Voy a llamarlo como pose. Entonces esto ha creado una nueva carpeta con el nombre del componente, y esa carpeta tiene todos los archivos específicos del componente. Abramos este archivo mecanografiado y tratemos de entender lo que entra ahí En primer lugar, tenemos este decorador de componentes que le dice a Angler que esta clase es un componente, y proporciona algunos metadatos que ayudan al pescador a entender cómo crear y mostrar Entonces, antes que nada, tenemos el selector. Eso define una etiqueta de estimación personalizada el pescador utilizará para mostrar este componente en particular Si este componente fuera a formar parte de un componente padre, este es un nombre de etiqueta que tenemos que usar. Tenemos el conjunto independiente en true. Esto permite que este componente exista sin formar parte de ningún módulo angular. Bueno, antes de angular 14, necesitamos tener todos nuestros componentes definidos dentro de un módulo. Con las últimas versiones de angular, ya no es necesario, y podemos definir componentes independientes. Si no sabes lo que es módulo, obviamente, no podemos hablar de ello en estos momentos. Lo exploraremos en otro momento. A continuación, tenemos importaciones. Aquí es donde podemos enumerar abajo todos los módulos angulares u otros componentes independientes de los que depende este componente en particular a continuación, tenemos la URL de la plantilla, y esto apunta al archivo STML que define la estructura o la interfaz de usuario de este componente En este caso, el archivo se encuentra en el mismo directorio que el componente y se denomina post dot component dot html, que corresponde a este archivo en particular. De igual manera, también tenemos esta URL de estilo que apunta al archivo SCSS que define los estilos para este componente en particular Puede escribir código SCSS en este archivo para darle estilo al componente Entonces en este momento, por defecto, pescador ha poblado algo de HTML en el archivo post TML Pero ahora mismo, no tenemos ningún estilo para esto. Pronto vamos a introducir algún código aquí. También tenemos este archivo spec dot Ts, que es un archivo de prueba para el componente. Obviamente, como eres principiante, es posible que no puedas entender este código, así que vamos a guardarlo para otro momento. Ahora intentemos lanzar esta aplicación y veamos qué va a pasar. Pero antes de eso, necesitamos incluir este componente en particular como parte del componente maestro o el componente de la aplicación. Entonces voy a copiar este selector e ir al archivo de estimación del componente app. En este momento, está poblado con algún contenido predeterminado. Simplemente podemos eliminarlo, y vamos a introducir nuestro propio código. Si notas aquí tenemos un error, eso es porque necesitamos importar este componente dentro de su archivo mecanografiado correspondiente Vamos a este componente de aplicación punto Ts, el archivo TypeScript, y luego vamos a incluir nuestro componente post El nombre del componente es el nombre de la clase. Voy a copiarlo y usarlo aquí. Si yo como mi mouse, en realidad podemos importar este componente automáticamente. Por lo tanto, esta declaración de importación es generada automáticamente por el código de Visual Studio. Ahora déjame guardar el archivo e iniciar nuestra aplicación y ver qué va a pasar. Para eso, voy a usar el comando G serve. Por lo que este comando compila su aplicación wangular e inicia un servidor de desarrollo local, que se puede acceder a través del host local Se ejecuta en el puerto 4,200, y ahí es donde podemos ver su aplicación ejecutándose Esto también tiene alguna característica de recarga en vivo, lo que significa que a medida que hagamos algún cambio en nuestro código, se reflejará instantáneamente en el navegador Así que permítanme copiar este enlace en particular. Vaya a su navegador. Y funcionó. Volvamos e intentemos cambiar el HTML. Guarde el archivo. Tan pronto como guardó el archivo, Angular ha hecho su trabajo. Y si vuelves al navegador, ahora se reflejan los nuevos cambios. Te veré a continuación. 7. 0107 publicaciones de Facebook demostración de aplicación: Creo en aprender haciendo, y según yo es la forma más efectiva de aprender. Entonces hoy, vamos a crear una aplicación tipo publicación en Facebook, y en el proceso, vamos a aprender muchas cosas en Anglo Este enfoque no solo es divertido, sino que te dará exposición a cómo usamos angel en proyectos en tiempo real. Entonces la aplicación que estás viendo es lo que vamos a construir. Funciona como una publicación de Facebook. Entonces tenemos un par de posts hechos por John Doe y Jane Smith, y estos son los posts que hicieron Entonces podemos interactuar con la publicación presionando el botón Me gusta. Una vez que hagas eso, vamos a ver un mensaje que dice que te gusta este post, y también podemos desempararlo para que no veamos ese mensaje. También podemos agregar un comentario, hacer clic en post para que ese comentario sea agregado. Muy bien, comencemos nuestro viaje para construir esta pequeña y divertida aplicación. Te veré a continuación. 8. 0108 Interpolación de enlace de datos y enlace de propiedades: Hasta el momento, hemos creado el proyecto angular y también hemos generado un nuevo componente, que es simplemente mostrar este mensaje. Si vuelves al navegador, este es un mensaje que vemos. Pronto, vamos a transformar esta aplicación en esta aplicación. Pero para eso, necesitamos una fuente de datos de donde obtengamos todos estos datos. Idealmente, se supone que debemos obtener estos datos de un servidor en formato JSON. Pero como estamos aprendiendo y para mantener las cosas simples, vamos a obtener estos datos del componente padre y luego mostrarlos en el componente hijo. Déjame mostrarte a lo que me refiero. Entonces tenemos el componente hijo que acabamos de crear, y ya tenemos el componente padre. Lo que voy a hacer ahora es que voy a poblar una propiedad o un campo en este componente con esos datos Ya tengo esos datos. Déjame mostrártelo. Voy a cambiar el nombre para posar y después voy a asignar ese valor. Entonces esto es básicamente una matriz de pose que contiene una lista de objetos que simulan la estructura de una publicación en redes sociales con detalles sobre el autor de la publicación, el contenido y sus comentarios correspondientes. La pose variable se inicializa como una matriz de objetos y cada objeto representa una publicación individual con sus propios campos de datos El campo ID es de tipo número. El campo user es de tipo string, el contenido es de tipo string, y luego también tenemos comandos, que es una matriz de cadenas. Este segmento de publicación en este momento está sosteniendo un par de objetos. Ahora, necesitamos de alguna manera obtener estos datos en el componente hijo. Veamos cómo se hace. Vamos a crear una propiedad o una variable que va a contener esos datos. Vamos a llamarlo como pose de usuario, y esto va a ser una matriz también. Haré todo el turno F para formatear el código. Demos un poco de espacio para respirar. Bien, entonces User post es el nombre de la propiedad, y es una matriz de cualquier tipo, lo que significa que puede contener una matriz de cualquier tipo de objetos de datos, cadenas, números, etcétera Y ahora mismo, es un MTRI sin ningún dato. Ahora, definamos esta propiedad en particular en esta etiqueta. Así que al igual que tenemos elementos STML con sus propias propiedades, también podemos usar nuestras propiedades personalizadas como parte de nuestros componentes Podríamos estar teniendo una etiqueta de imagen cuya propiedad podría ser ARC. Del mismo modo, tenemos esta app pose custom component tag, cuya propiedad podría usar una pose. Y ahora vamos a asignarle algún valor a esto. ¿Puedes adivinar cuál va a ser el valor? Bueno, es esta variable la que contiene los datos. Déjame copiarlo y pegarlo aquí. Ahora para echar un vistazo a lo que tiene esta propiedad de publicación de usuario, intentemos mostrarla en la interfaz de usuario. Y la sintaxis para eso es la siguiente, vamos a usar llaves para que se muestre Esto se llama interpolación. Esta es una técnica de enlace de datos de una manera que le permitirá mostrar los datos del componente en la plantilla. Esto significa que los datos fluyen de la propiedad del componente al elemento TML Déjame guardar el archivo, y volvamos al navegador para ver si ahí pasa algo . No muestra nada. Eso significa que aquí no se pobló nada. Entonces, para decirle a Angular que estamos esperando que esta propiedad sea poblada por el componente padre, necesitamos usar un decorador llamado input. Déjame mostrarte a lo que me refiero. Así. Un pescadero ya hizo el trabajo por mí de importarlo también Una vez que digo el archivo, estamos viendo un error. ¿Puedes adivinar por qué estamos viendo este error? Bueno, lo que tenemos aquí es una matriz, pero lo que estamos tratando de asignar aquí es una cadena. Pero la pregunta es, no pretendemos asignarlo como una cadena. Tenemos la intención de asignar este valor particular. Para que funcione, necesitamos usar algo llamado enlace de propiedades. Simplemente encierra esta propiedad entre corchetes, y eso solucionará el problema. ¿Por qué es eso? Esto significa que en realidad está vinculando una propiedad del componente padre. Que es pose para un componente hijo llamado pose de usuario. Y esta propiedad tiene que estar teniendo este decorador de entrada. ¿Sólo entonces sucederá eso? Ahora, vamos a guardar el archivo y volver al navegador, y todo lo que estamos viendo aquí es un par de objetos. ¿Por qué es eso? Bueno, esto se muestra como matriz de objetos JavaScript, que podrían no ser muy legibles para hacerlo legible, forma de usar JSON de tubería. Esto formateará la matriz en cadena JSON. Y esto es parte de los módulos comunes. Tenemos que importarlo, guardar el archivo, y ya no tenemos ese error. Volvamos y funcionó. Podemos mostrar la información de la publicación. Veamos cómo podemos evolucionar esto en esta aplicación. Te veré a continuación. 9. 0109 Directivas que usan NgFor para mostrar publicaciones: Ahora mismo, estamos mostrando los datos en formato JSON. Obviamente, no es así como queremos mostrarlo a los usuarios. Queremos extraer los datos de este JSON y luego envolver esos datos con etiquetas EstiML y luego eventualmente aplicar algún estilo para que podamos mostrarlos así Entonces nuestro objetivo para esta conferencia en particular es extraer el nombre o el nombre del autor y su publicación correspondiente y luego mostrarlo de manera significativa. Si volvemos al código, en este momento, esta propiedad en particular está conteniendo los datos, y solo para reiterar, estamos obteniendo los datos del componente padre debido al enlace de propiedad, donde estamos vinculando la propiedad del usuario del componente hijo a la propiedad post del componente padre. Y así es como estamos obteniendo los datos en esta propiedad en particular. Y sólo pasaría si tienes a este decorador. Ahora, intentemos mostrar los datos. Voy a poner todo en una etiqueta DV para empezar. Y aquí queremos poblar el nombre y el contenido del post Voy a mantener el nombre en la etiqueta H dos. Y entonces el post va a ir dentro de una etiqueta de párrafo. Entonces, ¿cómo vamos a obtener el nombre de usuario y el contenido? Bueno, es mediante el uso de interpolación. Vamos a usar un par de Colbrss para eso. Y aquí, vamos a decir pose de usuario. Queremos acceder al primer elemento. Pose está teniendo actualmente un par de elementos. Y estamos usando user post porque ese es un nombre de propiedad en el componente hijo. Entonces, ¿cómo accedemos al primer elemento? Bueno, si digo cero, eso nos va a dar acceso al primer elemento como usuario punto. Entonces voy a hacer lo mismo por el contenido también. Voy a configurar el contenido. Así que con la interpolación, somos capaces de enlazar los datos del componente a la plantilla Déjame guardar el archivo, y veamos cómo se renderiza en el navegador. Volvamos. Y ha mostrado el primer elemento. Y vamos a hacer lo mismo para el segundo elemento también. Voy a copiar pausar el código y aumentar el número en uno. Esto va a acceder al segundo elemento, que es éste. Volvamos y se renderizó también. Ahora, ¿qué tan práctico es escribir código así? Ahora mismo, tenemos un par de elementos en esta matriz, así podemos escribir código así. Pero, ¿y si tenemos cientos o incluso miles de elementos? Simplemente no es práctico escribir código así. ¿Tenemos una solución? ¿Hay alguna manera de dejar que Angular haga el trabajo por nosotros? La respuesta son directivas angulares. Vamos a hablar de directivas anglo más detalle más adelante Pero por ahora, nos vamos a centrar en una directiva en particular que nos va a ayudar a hacer este trabajo, y esa directiva es NG cuatro. Déjame mostrarte a lo que me refiero. Entonces voy a definir solo una etiqueta, una etiqueta de buceo. Y aquí, voy a usar un directo. Y la sintaxis para eso es la siguiente, estrella NG cuatro. Y aquí voy a decir dejar post de usuario pose. G para directiva nos permitirá iterar sobre una matriz llamada pose de usuario Y para cada elemento en la matriz de pose de usuario, crea una variable local llamada post, que representa el elemento actual en la iteración En resumen, vamos a declarar una variable para cada elemento la matriz y de especifica la matriz que estamos recorriendo, que en este caso es pose de usuario Para acceder a los datos del elemento actual, podemos utilizar esta variable. Voy a sustituir esto con post. Tangler esencialmente va a repetir esta etiqueta número de veces, igual al número de elementos en la matriz o número de elementos en la publicación del usuario Y podemos acceder a los datos de todos y cada uno de los ítems usando esta variable llamada post. Ahora bien, si te estás preguntando cómo podemos usar estas directivas en el archivo TML Bueno, cuando compilemos este código, Angular los va a evaluar y luego generar STML dinámico Entonces, si tenemos cientos de elementos aquí, esos muchos números de etiquetas Du serían creados por Angular una vez después de compilar. Navegador no entiende estas directivas. Estos son proporcionados por Angular para nuestra conveniencia. Entonces déjame guardar el archivo y echemos un vistazo al navegador y veamos si renderiza los datos, y seguro, ha funcionado. Ahora quiero darle una tarea. Sigue adelante y muestra los comentarios para cada publicación. Es sencillo hacerlo y ya conoces la solución. Espero que lo hagan. Te veré a continuación. 10. 0110 Visualización de comentarios de publicaciones: Podemos mostrar el nombre del autor y el puesto correspondiente. Ahora sigamos adelante y mostremos sus comentarios correspondientes. Además, también vamos a agregar estos botones como y post y también este campo de entrada. Para esta conferencia en particular, no vamos a dar ningún tipo de comportamiento para estos botones. Eso lo vamos a hacer en la próxima conferencia o próximas conferencias. Así que volvamos al código de Visual Studio. Espero que hayas intentado agregar los comentarios y espero que tengas éxito. Si no, solo echa un vistazo a cómo se debe hacer. Entonces solo por alguna separación lógica, voy a agregar otra etiqueta Dew. Esto podría ser útil si queremos darle estilo a secciones particulares. Y dentro de esta etiqueta Dev, voy a crear una lista desordenada donde vamos a mostrar los cometas Aquí es donde vamos a utilizar la directiva NGF para ordenar de bucle a través o iterar a través de toda la lista de comandos Entonces estoy usando exactamente la misma sintaxis. Vamos a llamarlo como comentario, y voy a copiar este campo en particular así. Y por supuesto, necesitamos obtener esto de esta variable post, que estaría sosteniendo los comandos de los elementos actuales. Publicar comandos de punto. Y dentro de esta etiqueta, podemos usar interpolación para mostrar el comentario Así, guarda el archivo. Y si vuelvo al navegador, deberíamos estar viendo los comentarios. Déjame agregar rápidamente el botón también. Voy a llamarlo como me gusta. También necesitamos un botón similar para publicar un comentario. Llámalo como post. Y entonces necesitamos un campo de entrada. Al igual que así. Guarde el archivo. Volvamos al navegador. Entonces tenemos el botón like, el campo de entrada, y es el botón post correspondiente. Por supuesto, por el momento no tenemos ningún comportamiento para estos botones. Eso es lo que vamos a hacer en las próximas conferencias. Te veré 11. 0111 Manejo de eventos para agregar comportamiento: Trabajemos ahora en este botón como. Quiero que pongas atención a cómo se está comportando este botón me gusta En el momento en que lanzemos la aplicación por primera vez, todas las publicaciones van a ser estado de no me gusta decir, para cada publicación, vamos a ver este botón llamado L. Si hago clic en el botón Me gusta de cualquier publicación, el estado debería cambiar así. El texto en el botón debería cambiar a diferente, y entonces deberíamos poder ver este texto que dice, Te gustó este post. Y si hago clic en el botón A diferencia, debería volver a cambiar al botón L. Y la forma en que vamos a lograr esto es manteniendo una lista o un conjunto de publicaciones que les gustaron. Si recuerdas, para todos y cada uno de los elementos, tenemos este campo ID. En el momento en que haga clic en el botón Me gusta de una publicación en particular, vamos a agregar su ID correspondiente a esa lista o al conjunto. De esa manera podemos hacer un seguimiento de todas las publicaciones que son del agrado, y en base a eso, podemos mostrar el texto en el botón así como el texto que estamos viendo junto a él. Entonces veamos cómo se hace. Entonces aquí voy a introducir un nuevo set que mantiene una lista de publicaciones que me gustaron. Voy a decir set. Esto va a mantener un conjunto de números porque el campo ID es de tipo número. Y luego voy a introducir un método llamado like post. Y luego le vamos a mandar el ID del puesto. Que es de tipo número. Este método no va a devolver nada, entonces decimos vacío. Entonces vamos a tener condición que verifiquemos para ver si este punto como post dot tiene este ID enviado. Si ese es el caso, entonces queremos eliminar ese ID de la lista de publicaciones que me gustaron. Este método se activaría cada vez que pulsamos ese botón. Si hacemos clic en el botón Me gusta, vamos a agregar esencialmente ese ID en esta lista o el conjunto y viceversa. Si hacemos clic en el botón de diferencia, entonces verificaremos para ver si el post ya está presente en el post like. En caso afirmativo, lo eliminaremos. Así que aquí, vamos a establecer este post like, dot delete, post ID, así. Entonces tendremos el bloque else y aquí solo agregamos el ID del post. Sé que te lleva algún tiempo hundirte esto, pero todo tendrá sentido en un tiempo. Vamos a la plantilla. Aquí, vamos a hacer enlace de eventos angulares. Entonces en el momento en que hagamos clic en este botón, adivina qué, vamos a llamar a ese método como post, y luego pasar el ID de post actual, me gusta solo para reiterar esta variable post contendrá los datos del elemento actual, y así es como obtuvimos el ID. Y aquí, vamos a usar la interpolación para especie de verificación para ver si la post marea está presente en la publicación que me gusta, y en base a eso, queremos mostrar el texto Led post dot tiene comprobante para ver si tiene el post enseñado ID. Quiero usar el signo de interrogación. Si está ahí, eso significa que post es como, y ahora queremos mostrar el texto a diferencia. De lo contrario, el post no está presente en la lista, por lo que queremos mostrar el texto como like. Déjame poner esto dentro del DVTag Y voy a hacer todo Shift F para formatear nuestro código Y junto a ella, voy a introducir una etiqueta span, y aquí es donde vamos a rellenar este texto Aquí, voy a usar NG para comprobar si la idea de post está presente en la lista de post me gusta o el post like dot tiene, y voy a enviar el post punto ID así. Si ese es el caso, queremos renderizar esta etiqueta span mostrando este texto. A U me gusta este post. Así. Guardemos el archivo y veamos si funciona. Me va a gustar este botón, y en el momento que presione ese botón me gusta, ha activado el evento click de ese botón, que se llama este método, y comprobará para ver si esta condición es verdadera. En este caso, es falso. Por eso siguió adelante y agregó ese ítem en particular o el ID en la lista de publicaciones. Y en base a eso, estamos cambiando el texto en el botón así como este texto en particular. Vamos a diferencia, y parecía estar funcionando muy bien. Entonces, cuando no me gustó, esencialmente hemos eliminado ese ID de publicación en particular de la lista, y en base a eso, estamos renderizando la etiqueta span así como esto Por lo que a esto se le llama manejo de eventos en angular. Espero que tenga sentido. Te veré a continuación. 12. 0112 Encuadernación bidireccional para agregar comentarios a una publicación: Bien, intentemos ahora agregar la función add command a nuestra aplicación. La forma en que vamos a lograrlo es mediante el uso de una combinación de enlace de dos vías y manejo de eventos. Déjame explicarte a lo que me refiero. Tenemos un campo de entrada para todas y cada una de las publicaciones. Siempre que escribo algún texto aquí, quiero que una propiedad en el componente se actualice instantáneamente Podemos lograrlo con un enlace de dos vías. Cuando el usuario haga clic en el botón de publicación, vamos a llamar a un método con el ID de publicación correspondiente y dentro del método, intentaremos encontrar esa publicación, y luego eventualmente intentaremos empujar ese comentario en la lista de sus comandos. Aunque estamos viendo un par de comentarios aquí, podríamos estar empujando un nuevo comentario a esta lista. Entonces echemos un vistazo a cómo se hace. Entonces ya tenemos el campo de entrada. Primero llenemos algún texto predeterminado. Si volvemos, vemos texto por defecto llamado add a comment. Entonces vamos a agregar eso primero. marcador de posición, añadir un comentario. Así. Y ahora aquí voy a usar una de las directivas anglo Para encuadernación de dos vías, se llama NG moral. Y se va a envolver con combinación de paréntesis y corchetes Te voy a explicar lo que está pasando aquí en sólo un rato. Y aquí voy a decir nuevo comentario. Necesitamos tener esta propiedad agregada en el componente. Voy a copiarlo y crear una nueva propiedad aquí. Va a ser de tipo cadena porque eso es lo que ingresa el usuario. Por defecto, no va a tener nada. Guarde el archivo. Esto pertenece al módulo Formularios, por lo que necesitamos importar guardar el archivo y ya no tenemos el error. Entonces, el modelo ng es la directiva anglo utilizada para unión de dos vías para todos estos elementos de formulario El campo de entrada ahora está enlazado a la nueva propiedad de comando en el componente. Cuando el valor del campo de entrada cambia, cada vez que el usuario escribe algo, actualiza automáticamente el valor del nuevo comentario. Esta propiedad se actualizaría instantáneamente. Pero por qué esto se llama vinculación de dos vías es algo que entenderás al final de esta conferencia. A continuación, vamos a crear un método que corresponda a este botón de post. Entonces vamos a tener un evento click como con este botón, voy a copiar esto y aquí vamos a cambiar el nombre del método a Agregar comentario, y una vez más, vamos a enviar el ID del post. Vamos a crear este método. De nuevo, permítanme copiar este código para ahorrar algo de tiempo. Pero vamos a cambiar la lógica. En primer lugar, intentaremos encontrar la publicación por el ID de correo. Entonces hagámoslo. Voy a crear un post constante igual a este usuario post dot find. Estoy tratando de encontrar una publicación con ese ID de publicación, y esta es una sintaxis para eso. Es igual a igual, igual a ID de poste. Así que el método find se utiliza para buscar en el array post usuario, pero el post, cuyo ID coincide con el ID de post proporcionado como argumento. Entonces tendremos una condición para ver si la publicación realmente existe y no está indefinida. Entonces si el post existe y este nuevo comentario dot trim, solo entonces queremos agregar el comentario? Entonces, si la publicación no está indefinida y el nuevo comentario se actualiza con algún valor después de recortar los espacios en blanco al final, entonces realmente queremos empujar ese comentario a entonces realmente queremos empujar ese comentario a la lista de comentarios de esta publicación en particular Voy a decir post punto comandos punto. Empuje este punto Nuevo Comando. Y luego finalmente, una vez que empujamos el comando, ya no queremos mostrar ese texto en el campo de entrada. Entonces para eso, voy a actualizar la nueva propiedad command y hacerla vacía, guardar el archivo. Yo también voy a salvar esto. Volvamos a ver si la aplicación se comporta como se esperaba . Y funcionó. Podemos agregar un nuevo comando. Ahora bien, ¿por qué esto se llama unión de dos vías? Al notar, en el momento en que algo se actualiza en este campo de entrada, lo mismo se reflejaría en este campo también. También es cierto al revés. En el momento en que actualizamos esta propiedad en particular, lo mismo se refleja aquí también. Los datos fluyen esencialmente no solo de la plantilla al componente, sino también al revés. Los datos también se están actualizando y son volados desde el componente a la plantilla Mientras que en caso de interpolación, ese no es el caso. Se llama enlace unidireccional donde los datos simplemente fluyen del componente a la plantilla. Entonces ya no tenemos el texto aquí. Espero que tenga sentido. Te veré a continuación. 13. 0113 Mini clase de SCSS: Esta va a ser una clase minimster en SCSS o SASA CSS SCSS es como una versión evolucionada de CSS. Se ve similar al CSS normal, pero con características adicionales para hacer que nuestro estilo sea más eficiente. Pero SCSS es más popular porque es totalmente compatible con CSS, lo que significa que puedes tomar cualquier archivo CSS existente y comenzar a agregar características de SCSS sin cambiar En esta conferencia, vamos a hablar todas las características esenciales que necesitas conocer junto con ejemplos. Primero hablemos de variables. Echa un vistazo a esta tradición de estilo CSS. Estamos usando exactamente el mismo valor o el color para el atributo color tanto en H uno como en H dos. Ahora bien, esto podría ser un problema porque si tuviéramos que actualizar este color, tendríamos que hacerlo en ambas ubicaciones. Ahora bien, en este caso, son solo un par de ubicaciones, así que quizá no tengamos ningún problema. Pero, ¿y si actualizáramos el color en múltiples ubicaciones? Bueno, eso se convierte en un trabajo tedioso y es propenso a errores. En SCSS, tenemos variables. Aquí estamos tratando de definir una variable llamada color primario, cuyo valor es el color en sí, y estamos usando esa variable a través de múltiples ubicaciones. Así que cada vez que actualicemos el valor del color primario, se reflejará en todas las ubicaciones donde sea que estemos usando esa variable. También podemos usar propiedades personalizadas CSS o variables CSS, pero no son tan flexibles como las variables SCSS en términos de lógica de escritura porque SCSS nos permite escribir código con características avanzadas como bucles, condiciones y funciones que no son posibles con las propiedades personalizadas de CSS Sin embargo, hay una ventaja significativa con las propiedades CSS, que es poder actualizar los valores dinámicamente durante el tiempo de ejecución. Mientras que en SCSS, las variables son estáticas y solo funcionan en tiempo de compilación En otras palabras, el archivo SCSS eventualmente se compilaría a un archivo CSS equivalente para que los navegadores puedan entender No podemos cambiar sus valores durante el tiempo de ejecución cuando se ejecuta la aplicación. Luego viene la anidación. En CSS, debemos escribir selectores repetidamente, aunque estén relacionados, tal y como estás viendo aquí Mientras que en CSS, se permite el anidamiento, lo que hará que el código sea más legible y más fácil de mantener también Y con sólo mirar este código, podemos decir cómo se vería su STML correspondiente Debería verse algo así. Tenemos el elemento NAV cuyo elemento hijo es unordered list o UL, cuyo elemento hijo es el elemento list, la etiqueta LI se sigue la misma estructura en el estilo, que la hace más legible y mantenible A continuación vienen parciales. CSS sí admite la regla de importación, pero cada entrada da como resultado una solicitud STDB adicional, lo que puede ralentizar el tiempo de carga Por otro lado, SCSS nos permitirá dividir las hojas de estilo en parciales e importarlas sin solicitudes SDP adicionales, ya que eventualmente se compilan en un solo archivo CSS Todos los archivos que ves aquí que empiezan con guión bajo o parciales, y estamos usando la instrucción import para importarlos en el archivo SCSS principal A continuación viene los mixins. En CSS, si estás usando exactamente el mismo estilo para múltiples elementos, tendrás que copiar y pegar manualmente el código. Mientras que en SCSS, tenemos mixins, lo que nos permitirá crear bloques de estilos reutilizables y reutilizarlos a lo largo de nuestra hoja de estilos De esa manera, podemos evitar repetición y reutilizar los estilos existentes. Similar a escribir funciones en programación. Y en este caso, tenemos la mezcla en estilo de botón con nombre, y estamos incluyendo esa mezcla en múltiples ubicaciones. Y cuando lo hacemos, también estamos pasando algunos argumentos. En este caso, los argumentos son el color de fondo y el color del texto. Por defecto, eran azules y blancos, pero podemos sobrescribirlos enviando nuestros propios argumentos Entonces para el botón uno, estamos enviando blanco y negro, y para el botón dos, estamos enviando rojo y blanco. A continuación viene la herencia. En CSS tradicional, si tenemos que usar exactamente el mismo estilo en múltiples ubicaciones, una vez más, tenemos que simplemente copiar y pegar. Pero un CSS nos permitirá extender un selector a otro, y de esta manera podremos reutilizar los estilos existentes. A continuación vienen los bucles. Echa un vistazo a este código CSS tradicional. En contraste, echemos un vistazo al código SSS, donde hemos utilizado loop para generar dinámicamente estos estilos para nosotros. El director FOR crea un bucle y el dólar I se utiliza para insertar el número de iteración del bucle actual tanto en el nombre de la clase como en el valor de la propiedad en este caso Este código generará exactamente el mismo estilo que ves en el lado izquierdo durante el tiempo de compilación. A continuación vienen las funciones. CSS tiene un conjunto limitado de funciones integradas como Calc, RGB o URL Sin embargo, no puedes definir tus propias funciones en CSS. Mientras que en un CSS, nos permitirá crear funciones personalizadas para realizar operaciones como la manipulación del color, cálculos, básicamente, cualquier cosa que te gustaría hacer. Entonces aquí tenemos la función llamada calcular ancho, y luego estamos llamando a esa función enviando algún argumento. En este caso, estamos enviando 100 píxeles, que se multiplicarían por 1.5, y se devolvería el mismo valor. A continuación vienen las declaraciones condicionales. Echa un vistazo a este código. Como puede ver, SCSS permite lógica condicional con declaraciones I Ls y elseif Entonces aquí estamos comprobando para ver si la variable theme es oscura. Si, tenemos un estilo específico para eso, se, estamos introduciendo un estilo diferente. Luego vienen las operaciones matemáticas. CSS tiene operaciones matemáticas muy básicas que puedes realizar usando Calc, pero SCSS permite operaciones matemáticas complejas directamente sin necesidad de ningún método Calc Eso es todo sobre SESS y enhorras. Acabas de graduarte de la clase magistral de SCSS. Te veré a continuación. 14. Revisión de Skillshare Hacer: Hola, Este es tu instructor para este curso y espero que estés disfrutando mucho del viaje hasta ahora. El motivo de este video es básicamente para pedirte que solo te tomes un par de minutos para calificar y revisar este curso. Esto es realmente importante porque dependiendo del número de calificaciones y reseñas que reciba el curso, equipo de Skillshare decidirá si mantener el curso en esta plataforma o eliminarlo Desafortunadamente, pocos de mis cursos fueron removidos. Y muchos estudiantes se vieron impactados por eso, porque carecían de suficientes críticas y calificaciones Si no es un gran favor, solo tómate un par de minutos y haz la lectura para este curso y también describiendo un par de líneas, lo que has aprendido hasta ahora. Y si te ha beneficiado de alguna manera u otra, eso va a ayudar a que este curso mantenga vivo en esta plataforma. Y probablemente no vas a perder el acceso a este curso también. Espero que lo haga. Muchas gracias y nos vemos a continuación. Que tengas un gran día por delante. 15. 0114 Diseñar nuestra aplicación de publicaciones con SCSS: Seguí adelante e introduje tyling para nuestra aplicación para que se vea así Ya que ahora estás familiarizado con SCSS, deberías ser capaz de comprender lo que está pasando aquí Básicamente, he introducido atributo class para todas las etiquetas DV en el HTML, y también he proporcionado su estilo correspondiente. Y si te das cuenta, estamos tratando de seguir e imitar la misma estructura del propio HTML Así que tenemos la etiqueta Dv dentro de la cual tenemos un par de etiquetas Du hijo, y estamos siguiendo la misma estructura. Entonces tenemos el selector DevTag padre. Post es el nombre de la clase que hemos usado aquí. Dentro del cual estamos tratando seleccionar los sub divs, acciones y comentarios Y hemos proporcionado estilismo para sus elementos. Quiero que se tome un tiempo y repase este archivo y trate de entender lo que estamos tratando de hacer aquí. También he puesto algunos comentarios para que entiendas. Y no creo que tenga mucho sentido para mí guiarte a través de cada uno de estos atributos porque honestamente, estilismo es una de las cosas más fáciles de hacer. Y además, esto no se considera realmente como una habilidad técnica. Espero que tenga sentido. Te veré a continuación. 16. 0115 Servicios angulares: Imagina que estás construyendo un sitio web de comercio electrónico usando angular. Ahora, como parte de tu proyecto, podrías estar teniendo estos componentes, componente de perfil y componente de órdenes. El componente de perfil tiene como objetivo mostrar el perfil de usuario, y el componente de pedidos tiene como objetivo mostrar los pedidos históricos realizados por el usuario. Por supuesto, en un sitio web de comercio electrónico, podrías estar teniendo cientos de componentes. Pero por el bien de este ejemplo, centrémonos en estos. Podría haber ciertas funcionalidades que van a seguir siendo comunes en múltiples componentes. En este caso, es posible que necesitemos autenticación residiendo en ambos componentes. Podríamos tener algunas líneas de código para autenticar al usuario, y este código de autenticación enviará la solicitud al servidor, asegurándose de que el usuario es realmente quien dice ser Ahora bien, esta es una forma muy ineficiente de manejar este escenario. ¿Puedes adivinar por qué? Bueno, antes que nada, estamos teniendo el mismo código diseñando en múltiples componentes, así que eso es repetición. En segundo lugar, estamos haciendo múltiples solicitudes, lo que drenará los recursos del servidor. Deberíamos poder enviar solo una solicitud y luego almacenar ese estado en algún lugar para que no tengamos que seguir enviando la solicitud para autenticar al usuario Precisamente por eso necesitamos servicios angulares. En este escenario, podríamos introducir un servicio llamado servicio AT, que tendrá código específico de autenticación. Vamos a mover el código de autenticación de los componentes a este en servicio para que pueda permanecer en un solo lugar y los componentes solo harán uso del servicio AT para conocer el estado de autenticación del usuario. Pero es el en servicio el que en realidad enviará la solicitud al servidor para autenticar al usuario Una vez que lo haga, también va a mantener un estado. Esencialmente, dentro del servicio, podríamos tener una propiedad para almacenar el estado de autenticación del usuario. Solo va a enviar la solicitud una vez y luego va a actualizar el estado o el valor de la propiedad. Los componentes solo echarán un vistazo al valor de la propiedad y en base a eso, sabrán si deben ser renderizados o no. Entonces, esencialmente, estamos usando servicios para obtener datos o para interactuar con el servidor, manteniendo el estado, como acabas de ver También podríamos tener funciones de utilidad que residen en el servicio AT. Entonces, si tienes alguna función de utilidad como transformación de datos o la validación de la entrada del usuario, por ejemplo, puedes tenerlas todas en un solo lugar dentro del servicio Y, por supuesto, también podríamos tener la lógica empresarial. En este caso, básicamente estamos comprobando si el usuario tiene suficientes permisos o no. Pero, ¿cuáles son las ventajas de este enfoque? Bueno, antes que nada, la reutilización de código, lógica se puede escribir una vez y usar en múltiples componentes Separación de preocupaciones, que mantendrá los componentes enfocados en la lógica de presentación, mientras que la lógica de negocios y la obtención de datos se trasladan a los servicios Esto también mejorará la veracidad de los servicios porque no tratan con ninguna lógica de interfaz A continuación, vamos a introducir el servicio en nuestra aplicación de publicaciones de Facebook. Te veré a continuación. 17. 0116 Configuración de endpoints y servicio de datos: Por el momento, estamos obteniendo todos los datos de publicación del componente padre. Este no es un escenario realista. Necesitamos estar obteniendo estos datos del servidor real, y ¿adivina qué? En este momento no tenemos ningún servidor que sirva estos datos. Idealmente, se supone que debemos crear un servidor en la inscripción en la nube y luego escribir algún código del sitio del servidor que realmente expondrá esta API para enviar estos datos, pero tengo una mejor solución a este problema. Simplemente va a usar una de las herramientas existentes en línea. Me encontré con este sitio con una búsqueda rápida en Google, y esto parece estar resolviendo el problema. Entonces el nombre del sitio web es bispto.com slash MOC guión API. Y como su nombre indica, nos permitirá crear una API simulada que no tengamos que tomarnos la molestia de crear el servidor, escribir el código, bla, bla, bla Tiempo de esta grabación, este sitio web está activo. Si no puedes ver este sitio en vivo con una búsqueda rápida en Google, puedes encontrar fácilmente muchas de esas herramientas. Entonces lo que voy a hacer ahora es que voy a copiar los datos de esta publicación. Antes de servirlo, necesitamos asegurarnos de que esté en el formato JSON adecuado. Para eso, estoy usando otra herramienta, que de nuevo es algo que me encontré con una búsqueda rápida en Google. Entonces voy a pegarlo aquí y dar clic en Procesar. Si tienes curiosidad sobre el nombre del sitio web, ese es jsonformata.usccept.com Entonces al parecer, este no es formato adyacente. Se supone que tenemos citas dobles para las claves y también para los valores Por lo que ha hecho el trabajo por nosotros. Voy a copiarlo y voy a pegarlo aquí. Esencialmente, estamos pidiendo a esta herramienta que envíe estos datos como respuesta cada vez que envío la solicitud. Y aquí voy a decir pose. Si el punto final de URL o si el UR termina con pose de slash, es entonces queremos que esta herramienta envíe estos datos Asegúrate de que esto sea 200 bien y haz clic en Crear servidor Mock. Para asegurarme de que esté funcionando, voy a copiar esto. Déjame ampliarlo para ti. Voy a copiar esta URL, pegarla aquí, posar, y podemos ver la respuesta que necesitamos. Continuemos a partir de la próxima conferencia. 18. 0117 Obtención de datos del servicio: En esta conferencia, vamos a echar un vistazo a cómo podemos obtener los datos de este servidor para que podamos hacer algo con él. Entonces, antes que nada, sigamos adelante y creamos un servicio, y el comando para eso es NG generar servicio. Nos pedirá que demos un nombre para el servicio. Voy a llamarlo como pose. Así que Angler ha creado estos dos archivos. Déjenme abrir esto. Voy a crear una variable que va a contener esa URL. Privado, llamémoslo como URL de API es igual, y voy a copiar esta URL. A continuación, voy a usar el constructor para inyectar la dependencia del cliente STTP Déjame mostrarte a lo que me refiero. Ya tenemos el constructor creado. Y si te estás preguntando qué es un constructor, es básicamente un método especial que se llama automáticamente cuando se crea una instancia de la clase. Entonces, cuando se crea la instancia de post service, Angler automáticamente llamará al constructor Normalmente usamos constructor para inyectar las dependencias. Déjame mostrarte a lo que me refiero. Voy a decir cliente privado STTPE TDP El cliente STDP es esencialmente un archivo mecanografiado, y tendrá algún código para enviar la solicitud al servidor y recuperar los Así que básicamente usamos esto para hacer una solicitud HDP al servidor Y al especificarlo en el constructor, sistema de inyección de dependencia angular inyecta automáticamente una instancia del cliente TDP cada vez que se crea Con esto, no tenemos que crear manualmente una instancia de iluminación astrotípica Podemos pedirle a Angular que nos inyecte la instancia. Pero para poder crear realmente la instancia de cliente astrotípico, necesitamos que angular lo sepa con la ayuda del proveedor Déjame mostrarte a lo que me refiero. Voy a abrir app config dot Ts, y aquí ya tenemos algunos proveedores. Además de estos, voy a especificar proporcionar cliente ATT. Al igual que así. Entonces, qué va a hacer esto, pocas palabras, estamos diciendo, Hey, angular, siempre que un componente o un servicio necesite una línea estodípica, por favor asegúrese de que se le proporcione Eso es lo que esto significa. Ahora, vamos a profundizar en la comprensión qué es la inyección de dependencia, patrón singleton, etcétera en el curso angular principal Pero por ahora, espero que tengas una idea. Al especificar proveedor, le estamos pidiendo a Angular que cree una instancia de línea stodípica, y al especificarla como parte del constructor, le estamos pidiendo a Angular que inyecte la instancia de next, voy a crear un método que realmente hará el trabajo de obtener los datos del servidor Voy a llamarlo como pose de buscar, así. Voy a decir observable A Así que este método básicamente devuelve observable que emite una matriz de cualquier tipo de elementos Nuevamente, vamos a profundizar en estos conceptos más adelante Pero por ahora, piensa en esto como algo que nos va a generar datos. Y aquí voy a devolver este STP punto G A. Vamos a especificar la URL API así La G es esencialmente el método de cliente tradipic que realiza una solicitud Stdpgt a la URL especificada, y estamos esperando una matriz de cualquier tipo Vamos a guardar el archivo. Guardemos también este archivo. Continuaremos a partir de la próxima conferencia. 19. 0118 Suscripción a datos y población: Bien, sigamos adelante y llenemos los datos en la interfaz de usuario. Para eso, voy a abrir el archivo post componente punto Ts. Actualmente, estamos obteniendo los datos del componente padre con enlace de dos vías. Entonces como ya no vamos a obtener los datos del componente padre, voy a deshacerme de esto, y eso debería dar un error en el componente padre. Así que vamos a abordarlo rápidamente. Voy a quitar esto de aquí. Y ya no necesitamos estos datos en el componente padre porque estamos obteniendo del servidor. Guarde el archivo. Volvamos al componente de post. Y aquí, por el momento, no tenemos constructor. Permítanme crear uno porque queremos inyectar el servicio en este componente. Constructor privado post service post service. Esto también nos ha importado automáticamente el servicio de correos . Guarde el archivo. Con esto, le estamos pidiendo a Angler que inyecte la instancia de servicio postal Entonces voy a usar uno de los métodos de pescadores llamados NG en así que Gate es uno de los anzuelo del ciclo de vida de los pescadores Básicamente, se llama una vez después de que angler haya inicializado todas las propiedades enlazadas a los datos de los componentes Normalmente, este es un lugar donde inicializamos datos de componentes o incluso para realizar tareas como recuperar datos del servidor En este caso, vamos a utilizar este método para obtener los datos usando el servicio angular. Así que aquí voy a decir este servicio de correos, y vamos a llamar al método que acabamos de crear fetch post dot subscribe Te voy a explicar lo que estamos haciendo aquí en sólo un rato. Y luego voy a decir pose. Esta pose de usuario punto, va a poblar la propiedad es igual a pose Guarde el archivo. Cuando llames al método subscribe, haré todo el Shift F para formatear el código. Cuando llamas al método subscribe, le estás diciendo a Angeler que ejecute el SDDPRquest y te dé los resultados cuando esté listo Si vuelvo, se puede pensar en observable como un flujo de datos que envía los datos a lo largo del tiempo Imagínelo como una tubería que puede enviar múltiples valores como números u objetos, o cualquier otro dato uno tras otro. Y estos valores no llegan todos a la vez. Vienen cuando están listos, ya sea inmediatamente o después. Y para realmente recibir los datos de un observable, es necesario suscribirse a él. Piense en suscribirse como adjuntar un oyente que espera y reacciona cada vez que llegan nuevos datos a Y cuando te suscribas, decidirás qué hacer con cada dato, el sentido absorbablele Ahora puede que tengas una pregunta. ¿Por qué no podemos simplemente recuperar los datos sin este concepto de observable y suscribirnos Bueno, los datos pueden tardar algún tiempo en llegar. Mientras tanto, queremos que nuestra aplicación también se esté ejecutando. Básicamente estás permitiendo que la aplicación continúe ejecutándose mientras esperamos la respuesta. Y una vez que los datos están listos, la suscripción los maneja sin bloquear la interfaz de usuario. Déjame guardar el archivo y ver si nuestra aplicación aún funciona. Bien. Por el momento, supongo que nuestra aplicación no se está ejecutando. Volvamos y hagamos NG Sv. Volvamos al navegador. Y ha funcionado. Espero que tenga sentido. Te veré a continuación. 20. 0119 Directivas personalizadas angulares Directivas de Strucutal y Attibute: Para entender el uso directo y angular, es muy importante que entiendas lo que es un modelo de objetos de cúpula o documento. El domo es como un mapa que representa todo el contenido de una página web de manera estructurada. Bueno, ¿qué significa esto? Imagina que este es tu HTML. Cuando el navegador carga este HTML, lee el archivo TML línea por línea y construye una cúpula que se parece a esto Tiene una estructura similar a la del propio HTML siendo el documento el nodo padre, y tiene el STML como nodo hijo, cuyos nodos hijos son head y body De ello se deduce esa estructura de árbol, y generalmente los navegadores crean cúpula para que JavaScript pueda acceder y manipularlo. JavaScript puede seleccionar, modificar, agregar o eliminar los nodos en la cúpula. JavaScript no pasa directamente HTML Raw. En realidad manipulan la cúpula para obtener los resultados deseados o para obtener la vista deseada. Ahora vamos a entender lo que es una directiva en angular. Echa un vistazo a este código. En este código, estamos tratando de recorrer toda la lista de elementos y mostrarlos en formato de lista. Suponiendo que esta es la lista, esencialmente estamos mostrando todos estos elementos en formato de lista desordenada Ahora bien, los navegadores no entienden esta directiva NG cuatro, es directiva anglo específica navegador solo entiende HTML y solo puede ejecutar JavaScript. Entonces, cuando realmente construimos un proyecto que tiene este código, Angular compila este archivo y genera JavaScript equivalente para que los navegadores lo entiendan Este JavaScript esencialmente hace la misma tarea de recorrer todos los elementos y hacer una lista de elementos con etiqueta Ai y luego finalmente crear un elemento de lista desordenado y agregar todos los elementos de la lista a Cuando este JavaScript se ejecuta en el navegador, la estructura de cúpula resultante podría verse algo así, lo que equivale a este STML Ahora bien, dado que esta directiva NG cuatro está manipulando con la estructura de cúpula, ésta entra dentro de la categoría de directiva estructural Por lo que NG cuatro se denomina como una directiva estructural porque manipula con la estructura de la cúpula Y normalmente, las directivas estructurales siempre comienzan con un astérix, como en el caso de G cuatro Ahora hablemos de directivas de atributos. Las directivas de atributos se utilizan para modificar la apariencia o el comportamiento de los elementos. No alteran la estructura de la cúpula, sino que afectan cómo se ve o se comporta el elemento. En este caso, estamos usando el estilo NG. Esta es una directiva angular que aplica estilo CSS en línea dinámicamente a un elemento. Se espera un objeto donde es o CSS propiedades y valores o los estilos a aplicar. En este caso, estamos teniendo una condición en la que estamos comprobando para ver si es red propiedad en el componente se establece en true o false, y en base a eso, estamos eligiendo ya sea rojo o azul. Si Es rojo se establece en true, entonces elegiríamos el valor como rojo. Si es falso, entonces elegiríamos el valor como azul. Construyendo el proyecto y después de compilar este archivo, el JavaScript resultante podría verse así Solo estamos llamando al método llamado update style, dentro del cual estamos comprobando para ver si la propiedad ese red está establecida en true o false, y en base a eso, estamos poblando el valor de color con rojo o azul Y este método se ejecutaría siempre que haya un cambio en la propiedad ese red. Ahora bien, este es un código JavaScript rudo. Este no es el código exacto. Pero el hecho de que en realidad no estemos manipulando o agregando o eliminando elementos en la estructura de cúpula, estilo G es un ejemplo de directiva de atributos Ahora puede haber casos en los que los angulares construidos en directores pueden no ser suficientes Necesitamos una funcionalidad diferente. En cuyo caso, angular nos permite crear nuestras propias directivas. Echemos un vistazo a un ejemplo de lo mismo. En este caso, tengo una directiva personalizada para la que he escrito mi propio código. Te voy a mostrar ese código en sólo un rato. Pero lo que estamos tratando de hacer aquí es que tenemos la etiqueta DIV, y queremos renderizar su contenido solo si el usuario está conectado usuario o solo después de que el usuario esté autenticado Como pueden ver, la directiva está empezando por Asterix. Eso quiere decir que se trata de una directiva estructural. Se va a manipular la estructura de la cúpula. Ahora, suponiendo que se ha iniciado sesión en propiedad de usuario se establece en true en el componente, vamos a hacer que este texto en particular sea bienvenido nuevo usuario valorado. Ahora echemos un vistazo al código de esta directiva, App show si ha iniciado sesión, y así es como podría verse. Podemos simplemente crear otro archivo mecanografiado con este código o ejecutar un comando rápido, y Angler realmente creará este archivo con algún Entonces inicialmente, tenemos el decorador de directivas, que le dice a Angular que esta es una directiva personalizada, cuyo nombre es Appshow si está conectado Y aquí dentro, tenemos esta sección de código. Ahora bien, este código es una combinación de dos cosas diferentes. Uno, tenemos la propiedad llamada app show si se inicia sesión con decorador de entrada, y en segundo lugar, también es un método setter para esa Entonces el decorador de entrada marca Appshow que inicié sesión como una propiedad de entrada de la directiva, lo que le permitirá aceptar un valor de la plantilla de componentes donde se usa la directiva En este caso, va a aceptar cualquiera que sea el valor que le asignemos sea el valor de bullying logueado, verdadero o falso. Entonces dijimos, establecer app show si se ha iniciado sesión como si estuviéramos definiendo un método, y esto define un conjunto de método para la app show if logged in property. Esto significa que cada vez que se asigna un nuevo valor a la directiva con true o false, este método se ejecuta con ese valor como argumento. También estamos pidiendo a angular que inyecte un par de dependencias. Ver contenedor f y plantilla ref. Básicamente, cada vez que aplicas un directorio a un elemento Stem específico, como DIV en este caso, se crea el contenedor de vista ref para ese elemento específico, y usamos ese objeto para insertar el contenido. En este caso, vamos a usar view container f para insertar algo de contenido en esta etiqueta div. Y el césped plantilla en realidad contiene la estructura de contenido de la etiqueta div, incluyendo cualquier STML anidado El troof plantilla es una referencia al contenido del div que tiene esta directiva En este caso, el césped plantilla esencialmente contiene todo el contenido dentro de esta etiqueta div. Y como puedes ver, dentro de este método, después de verificar el flag está logueado, y si es cierto, entonces esencialmente estamos usando view container para especie de poblar el contenido dentro de la etiqueta Dv, y lo estamos llenando con el contenido en la plantilla ref Y si no es cierto, sólo estamos diciendo, despejar todo lo que significa no mostrar nada. Estoy bastante seguro de que esto en realidad puede sonar muy confuso. Cuando echemos un vistazo a un ejemplo de directiva personalizada en próximas conferencias, definitivamente tendrás una mejor idea. Ahora echemos un vistazo a un ejemplo de directiva de atributos personalizados. Y aquí tenemos esta directiva personalizada llamada app Highlight. Y como su nombre indica, simplemente vamos a resaltar el texto en este elemento P. Y así es como se vería el código de directiva personalizado. Entonces tenemos oyentes de host, que escucha los eventos en el elemento host En este caso, escucha el mouse enter y deja eventos para aplicar o eliminar el resaltado Y para aplicar realmente el estilo, estamos pidiendo a Angler que inyecte par de dependencias elemento ref y renderer elemento f realmente proporcionará una referencia directa al elemento dom, en este caso, la etiqueta P, y renderer dos le permite manipular de manera segura el dom Así que dentro de este método de resaltado, esencialmente estamos usando renderer para establecer este estilo Tiene dos argumentos. El primero es el elemento de referencia, y el segundo es el estilo que queríamos aplicar. A continuación, vamos a mejorar nuestra aplicación de publicaciones en Facebook, introduciendo una directiva personalizada. De esa manera entenderás mejor. Pero como tarea, quiero que experimentes con cualquiera de las construidas en anglo existentes directivas construidas en anglo existentes, al menos tres de ellas. Espero que lo hagan. Te veré a continuación. 22. 0121 Tubos en tubos angulares empotrados Tubos personalizados: Las tuberías en Anglo transforman los datos de entrada en el formato de salida deseado Básicamente, toman datos como entrada y devuelven una versión transformada de los mismos. La mejor manera de entender esto es echando un vistazo a un ejemplo. Éstos son algunos de los construidos en pipas en Anglo. Aquí estamos usando las tuberías en mayúsculas y minúsculas. La tubería en mayúscula se usa para convertir la cadena en mayúsculas y la tubería en minúscula se usa para convertir la Tener la tubería JSON, que muestra un objeto o una matriz en formato JSON para que pueda ser legible por el usuario. Por lo general, utilizamos esta tubería para fines de prueba. A continuación, tenemos la tubería de corte, que extraerá una porción de una matriz o una cadena. La tubería de corte también es un ejemplo de una tubería parametrizada, lo que significa que la tubería toma argumentos adicionales para modificar su comportamiento El corte se utiliza con dos parámetros. Cero es el índice de inicio y siete es el índice final. Del mismo modo, también podemos mostrar una porción de una matriz usando slice pipe. También podemos combinar múltiples pipas en una sola expresión como estás viendo aquí. En este caso, estamos tratando de combinar tanto tuberías en mayúsculas como rebanadas, y la salida resultante es combinación de ambas Angular también nos permite crear tuberías personalizadas. En este caso, estamos creando una tubería personalizada que invertirá la cadena. Podemos ejecutar un comando angular para crear el código esqueleto, y esta clase aquí está implementando la transformación de tubería, lo que nos permitirá proporcionar el comportamiento para el método transform. Este método de transformación está aceptando un parámetro que es de tipo string. Y dentro de este método, estamos usando alguna lógica para básicamente revertir la cadena. Y así es como vas a usar esa pipa en la plantilla. Básicamente, el texto angular se mostraría al revés. Para crear esta tubería, este es el comando que necesitamos ejecutar. Motor generar tubería inversa, y esto creará el código esqueleto, después de lo cual podemos proporcionar la implementación. Como esto es muy sencillo, quiero que tomes esto como una tarea para crear esta pipa personalizada y de alguna manera hacer que funcione. En el plato principal, discutiremos algunos de los otros conceptos relacionados con las tuberías, como las tuberías puras e impuras, las tuberías asíncronas, las tuberías multiparamétricos, etcétera Pero por ahora, espero que tengas una idea qué son las pipas en anglo. Te veré a continuación. 23. 0122 Enrutamiento en carga angular y perezosa: En esta conferencia, entenderemos qué son las rutas en anglo Las rutas definirían cómo navega la aplicación entre diferentes vistas o componentes en función de la URL Vamos a entenderlo implementando realmente rutas en nuestra aplicación. Por el momento, así es como se está renderizando nuestra aplicación. Estamos mostrando un mensaje de bienvenida, y estamos mostrando la pose. Lo voy a hacer ahora es que voy a introducir un nuevo componente llamado Navegación y vamos a mover hacia fuera el código perteneciente a este mensaje al componente de navegación. Además, también vamos a tener un par de enlaces en ese componente. El primer enlace dice pose, ¿cuál hizo clic? Básicamente vamos a renderizar estos post, y el segundo enlace dice mi perfil. ¿Cuál hizo clic? Básicamente estamos mostrando el perfil de usuario. Entenderás mejor una vez que implementemos esto. Voy a volver a nuestro proyecto, y este es nuestro componente padre, ahora mismo, solo estamos mostrando la pose. Dentro del componente post, estamos teniendo este código que hemos introducido anteriormente. Permítanme copiar esta sección del código porque ahora queremos que forme parte de un nuevo componente llamado Navegación. Este componente ahora está dedicado solo para publicación. Permítanme abrir una nueva terminal y crear un nuevo componente llamado NG Generate Navigation. Tenemos que decirle a Angler lo que queremos generar. Es un componente. Así que Angler ha creado una nueva carpeta con archivos específicos de componentes Además de eso, también voy a generar otro componente llamado Perfil. Dentro de este componente de navegación, vamos a mover el código que acabo de copiar. Y en su expediente mecanografiado, tenemos que introducir también este directo Guarde el archivo. En el componente padre, ya no vamos a mostrar la publicación, nos desharemos de esto, sino mostraremos este componente de navegación. Voy a copiar este selector. Espero que seas capaz de seguirme a mi lado. En el archivo mecanografiado del componente app, tenemos que importar este componente Ya no necesitamos tener este componente post Vamos a reemplazarlo con componente de navegación. Guarde el archivo. Como parte del componente de navegación, también vamos a introducir un par de enlaces. El primero dice pose y el segundo dice Mi perfil. Volvamos al navegador y veamos cómo se está renderizando la aplicación. Entonces ahora mismo, así es como se está renderizando, lo cual, por supuesto, no tiene mucho sentido. Todo tendría sentido una vez después de introducir el enrutamiento. Localice este archivo llamado app routes dot Ts file. Si no tienes este archivo, tienes que crear este archivo manualmente por ti mismo. Y una vez que lo hagas, vamos a introducir las llamadas rutas en forma de array. Agreguemos un artículo. Voy a decir camino como pose, y vamos a asociarlo con un componente. En este caso, cada vez que alguien visita una URL con pose como la ruta, queremos renderizar el componente pose. Y de manera similar, también vamos a introducir otra ruta para perfil, y esto va a renderizar componente de perfil. Guarde el archivo. Y solo para que sepas, dentro del archivo principal dot Ts, en realidad estamos iniciando la aplicación Este es el punto de partida para nuestra aplicación. Anglo usa esta aplicación de arranque para inicializar la aplicación y renderizar el componente de la aplicación, que es el componente raíz o el componente padre que renderiza nuestra Así que esto corresponde al componente app dot HTML, que actualmente está mostrando este componente que acabamos de crear Navigation. Y también estamos proporcionando algunos config a angular, que tendría los proveedores o cualquier configuración global. Echemos un vistazo a lo que hay dentro de esto. Por lo tanto, el enrutador proveedor es una función auxiliar proporcionada por Angular para configurar el enrutador para la aplicación. Y acepta una serie de rutas. Básicamente, su configuración de enrutamiento y configura todas las dependencias requeridas para el enrutamiento en la aplicación Todo esto se cuida automáticamente. Nunca los he creado yo mismo manualmente, ¿verdad? Cuando estamos creando el proyecto en sí, le he pedido a Angular que configure rutas también, y lo ha hecho por mí. En caso de que estés configurando rutas manualmente, entonces además de crear el archivo de rutas, también necesitas especificar esto. Así que hemos configurado las rutas de salida, y ese es exactamente el camino que queremos usar en los enlaces también. Aquí voy a decir enlace router. Esto va a ser, ¿adivina qué? Pose, éste, y éste va a ser perfil. Siempre que ingresemos una URL, con esta ruta, angle intentaría renderizar el componente de perfil. Y si es con esta ruta, entonces trataría de renderizar el componente post. Déjame guardar el archivo. Pero como estamos usando tinta Router aquí, necesitamos importar el módulo de enrutador en este componente. Entonces en el archivo mecanografiado de navegación, vamos a introducir también módulo externo, guardar el Y en nuestro componente padre, vamos a introducir algo llamado Router Outlet. salida del enrutador actúa como marcador de posición en su aplicación donde el contenido de los componentes enrutados se carga dinámicamente Entonces aquí es donde Angler intentaría renderizar los componentes enrutados. Y como estamos usando esto, necesitamos ingresar al módulo en el archivo mecanografiado del componente de la aplicación. Guarde el archivo. Deberíamos poder ver este componente llamado navegación y este componente está mostrando el mensaje de bienvenida, así como renderizar estos dos enlaces para los que tenemos rutas configuradas. Por cierto, no hemos poblado nada en el componente de perfil. Hagámoslo rápidamente. Creo que el predeterminado funciona por ahora. Guardemos el archivo y volvamos a ver cómo se está renderizando la aplicación. Entonces así es como se está renderizando nuestra aplicación. Si hago clic en pose, ha renderizado el componente pose y si hago clic en mi perfil, renderizó el componente de perfil. Entonces así es como funciona realmente el enrutamiento. Vamos a profundizar en estos conceptos más adelante cuando entremos en el plato principal Y por supuesto, nuestra aplicación no se ve realmente atractiva visualmente en este momento. Eso es porque aún no hemos agregado este estilo. Déjame hacer justamente eso y volver a ti. Bien, he introducido el estilo para nuestra aplicación. Parte del estilo entró en el componente raíz y parte de él entró en el componente de navegación. Y en definitiva, así es como se está renderizando nuestra aplicación. Toma nota que cuando hago clic en uno de estos enlaces, por ejemplo, si hago clic en mi perfil, la URL resultante tiene el perfil como ruta, y de ahí que Angler sea capaz de renderizar el componente de perfil Además, Angler admite algo llamado carga perezosa, lo que significa que no descarga todos los componentes que alguna vez existieron Se descargaría los componentes que son absolutamente necesarios para la vista actual, lo que significa que a medida que interactuamos con la aplicación, se descargarían nuevos componentes bajo demanda. Esto mejorará el rendimiento y mejorará el tiempo de carga inicial y así también la experiencia del cliente. Por lo que los componentes solo se cargarían cuando la ruta es navegada también.