<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=I._Angular_4_Openwebinars</id>
	<title>I. Angular 4 Openwebinars - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=I._Angular_4_Openwebinars"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=I._Angular_4_Openwebinars&amp;action=history"/>
	<updated>2026-08-30T06:32:11Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=I._Angular_4_Openwebinars&amp;diff=259343&amp;oldid=prev</id>
		<title>Joan: /* Resum del curs */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=I._Angular_4_Openwebinars&amp;diff=259343&amp;oldid=prev"/>
		<updated>2020-04-24T10:14:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Resum del curs&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
=Referències=&lt;br /&gt;
*https://openwebinars.net/academia/aprende/angular-4/&lt;br /&gt;
=Resum del curs=&lt;br /&gt;
Tots els fitxers del projecte estan al github:&lt;br /&gt;
*https://github.com/nhpatt/agenda&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Introducción&lt;br /&gt;
	Introducción al curso y a Angular&lt;br /&gt;
	Arquitectura de una aplicación en Angular&lt;br /&gt;
	Instalación y primer proyecto&lt;br /&gt;
	Estructura de un proyecto en Angular&lt;br /&gt;
&lt;br /&gt;
TypeScript&lt;br /&gt;
	TypeScript parte I&lt;br /&gt;
	TypeScript parte II&lt;br /&gt;
	TypeScript parte III&lt;br /&gt;
	TypeScript IV&lt;br /&gt;
&lt;br /&gt;
Angular&lt;br /&gt;
	Interpolación y property data binding&lt;br /&gt;
	Event binding&lt;br /&gt;
	Directivas&lt;br /&gt;
	Comunicación entre componentes: Inputs y Outputs&lt;br /&gt;
	Pipes&lt;br /&gt;
	Servicios&lt;br /&gt;
	Inyección de dependencias&lt;br /&gt;
	HTTP&lt;br /&gt;
&lt;br /&gt;
Reactive-Extensions (RX)&lt;br /&gt;
	RxJS&lt;br /&gt;
	RxJS básico&lt;br /&gt;
	Usando Rx&lt;br /&gt;
	Operadores de Rx habituales&lt;br /&gt;
	Rx Avanzado&lt;br /&gt;
	Async pipe&lt;br /&gt;
&lt;br /&gt;
Avanzado&lt;br /&gt;
	Template forms&lt;br /&gt;
	Model Driven forms&lt;br /&gt;
	Validación y Observables en Forms&lt;br /&gt;
	Módulos&lt;br /&gt;
	Módulos avanzados&lt;br /&gt;
	Transclusión y creación de componentes dinámica&lt;br /&gt;
	Routing simple&lt;br /&gt;
	Routing con parámetros&lt;br /&gt;
	Guards&lt;br /&gt;
	Lazy loadings y routing avanzado&lt;br /&gt;
	Diferencias entre Angular 2 y Angular 4&lt;br /&gt;
	Estilos&lt;br /&gt;
	Debug&lt;br /&gt;
	Buenas prácticas de desarrollo en Angular&lt;br /&gt;
	Recomendaciones de rendimiento&lt;br /&gt;
	Conclusiones y referencias&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
==Introducción al curso y a Angular==&lt;br /&gt;
===¿Por qué Angular?===&lt;br /&gt;
La razón principal es permitir estructurar nuestros proyectos, seguir una arquitectura ya establecida.&lt;br /&gt;
&lt;br /&gt;
Los frameworks o arquitecturas no son buenas o malas de por sí, nos quitan flexibilidad a la hora de programar pero también nos guían en cómo implementar una nueva funcionalidad (son como raíles que nos dificultan crear malas arquitecturas).&lt;br /&gt;
&lt;br /&gt;
Por eso angular tiene sentido dependiendo del tipo de proyecto. Un proyecto Javascript pequeño no se aprovechará de tantas mejoras cómo uno grande, en la que la estructura de carpetas, componentes y la separación de conceptos tendrán más sentido.&lt;br /&gt;
&lt;br /&gt;
La arquitectura de angular se reescribió completamente en la versión 2, fruto de la experiencia con angular 1, miles de proyectos en producción y muchos ingenieros de Google. Por lo que nos asegura que será una arquitectura adecuada para proyectos grandes, mantenible y estructurada.&lt;br /&gt;
&lt;br /&gt;
Además de esa gran ventaja en proyectos grandes, angular nos simplifica la creación de funcionalidades o bien aplicando patrones (como un componente) o bien incluyendo librerías para hacer peticiones http, gestionar asincronía...&lt;br /&gt;
&lt;br /&gt;
'''Nota''': Angular 1 ahora se llama angularJS por lo que siempre que hablemos de angular nos referiremos a Angular 2 o Angular 4.&lt;br /&gt;
&lt;br /&gt;
===Orientado a componentes===&lt;br /&gt;
Angular es un framework orientado a '''componentes''', como otros frameworks populares actualmente (React, Vue...).&lt;br /&gt;
&lt;br /&gt;
La idea principal es estructurar nuestra página como una composición de componentes que se comunican entre sí, en vez de un gran fichero javascript alojando todo.&lt;br /&gt;
&lt;br /&gt;
Y esos componentes podremos reusarlos en nuestra aplicación u en otras.&lt;br /&gt;
&lt;br /&gt;
==Arquitectura de una aplicación en Angular==&lt;br /&gt;
===Conceptos principales===&lt;br /&gt;
'''Componentes''': Básicamente una ''clase'' javascript (ES2015), con una anotación (decorador es la palabra teórica) y su objetivo es soportar un ''template'', ser la clase que interacciona con el código html. Este es el código de un componente simple: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  import { Component } from '@angular/core';&lt;br /&gt;
&lt;br /&gt;
  @Component({&lt;br /&gt;
   selector: 'app-root',&lt;br /&gt;
   templateUrl: './app.component.html'&lt;br /&gt;
  })&lt;br /&gt;
  export class AppComponent {&lt;br /&gt;
   title = 'app works!';&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Template'''/vista: Código html (con tags estándar) con atributos y etiquetas específicas de angular. Será la forma de vincular componentes entre sí, definiendo un selector (normalmente una etiqueta html como div) y usando ese selector en nuestro template. Este es el código del template más sencillo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;h1&amp;gt;&lt;br /&gt;
   {{title}}&lt;br /&gt;
  &amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Databinding''':  En vez de usar jQuery o el DOM directamente para cambiar la visibilidad o el valor de un elemento usaremos ''databinding.'' Con el databinding conseguiremos cambiar el valor de nuestro template de forma dinámica sin tener que manipular el DOM. Es un pequeño lenguaje dentro del html, con múltiples sintaxis dependiendo del tipo pero la más sencilla es el estilo ''moustache'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
({{variable}})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Angular se encargará de mostrar el valor actualizado.&lt;br /&gt;
&lt;br /&gt;
Más adelante lo veréis más claro con los ejemplos pero podemos verlo de forma sencilla con un ''setTimeout/setInterval''. En el momento en el que cambiamos nuestro valor en nuestro componente typescript aparece en el template sin que tengamos que indicar nada.&lt;br /&gt;
&lt;br /&gt;
'''Directivas''': Componentes ya definidos por Angular que usamos en nuestros templates, básicamente dos útiles: '''ngFor''' para iterar sobre una lista y renderizar varios elementos; y '''ngIf''' para renderizar algo o no dependiendo de una condición.&lt;br /&gt;
&lt;br /&gt;
'''Metadata''': Los atributos que usamos dentro de la anotación del componente. Es la configuración del componente y nos permite indicar dónde está la ruta de nuestro template, definir un template inline (templateUrl), el selector para usar el componente... Ésta es la apariencia de un uso de una directiva ''ngFor'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;h1 *ngFor=&amp;quot;let charla of charlas&amp;quot;&amp;gt;&lt;br /&gt;
   {{charla.titulo}}&lt;br /&gt;
  &amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Servicios''': Una clase javascript (de ES2015) que contendrán nuestra lógica de negocio. En vez de definirlo en el componente, encapsularemos la lógica en estas clases que usaremos en los componentes.&lt;br /&gt;
&lt;br /&gt;
'''Inyección de dependencias''': Una aplicación de un patrón (Inversión de control) con la idea de desacoplar la creación de componentes del uso de los mismos.&lt;br /&gt;
&lt;br /&gt;
'''Módulos''': Una forma de organizar nuestra aplicación Angular. En vez de tener muchos componentes comunicándose entre sí, haremos pequeñas agrupaciones de componentes relacionados (por negocio, caso de uso) y tendremos componentes privados y públicos.&lt;br /&gt;
&lt;br /&gt;
'''Y más cosas''': Angular incluye librerías para hacer formularios de forma sencilla, hacer llamadas http o animaciones. Son partes importantes de angular o librerías habitualmente usadas pero no forman parte del core de angular.&lt;br /&gt;
&lt;br /&gt;
==Instalación y primer proyecto==&lt;br /&gt;
Pasos a seguir para instalar e iniciar nuestro proyecto&lt;br /&gt;
&lt;br /&gt;
*Instalar node.js&lt;br /&gt;
*Instalar, a través de npm, angular cli:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo npm install -g @angular/cli&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Crear un proyecto nuevo con&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ng new nombre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Y para lanzarlo tendremos que entrar en el directorio y ejecutar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ng serve -o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un proyecto en Angular==&lt;br /&gt;
*''src/app'' donde alojaremos nuestros componentes (nombre.component.ts), templates (_nombre.component.html), módulos…&lt;br /&gt;
*package.json: donde especificaremos nuestras dependencias y librerías (es de npm).&lt;br /&gt;
*tsconfig.json con la configuración por defecto de typescript&lt;br /&gt;
*angular.cli.json es el fichero de configuración de Angular CLI, la consola de creación rápida de aplicaciones.&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, març 2019&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>