Angular
Angular
Angular
● Inyección de dependencias
● Servicios
● Cliente http (APIs REST)
● Navegación por la aplicación (Router)
● Internacionalización
● RxJS
● Soporte para test unitarios
● Librerías de componentes
● Renderizado en el servidor (Angular universal)
Angular vs JQuery
Angular JQuery
Framework Librería
•NodeJS: https://nodejs.org/es/
•TypeScript: http://www.typescriptlang.org/
•Angular CLI https://cli.angular.io/
https://github.com/angular/angular-cli
•Ionic http://ionicframework.com/getting-started/
•Atom https://atom.io/
•Visual Studio Code https://code.visualstudio.com/
Plugins ATOM
•ATOM
• Angular 2 Type Script Snippets
• Atom Bootstrap3
• Atom Typescript
• File Icons
• Platformio Ide Terminal
• V Bootstrap4
Plugin VSC
TypeScript es un lenguaje de programación de código abierto desarrollado por Microsoft, el cual cuenta con
herramientas de programación orientada a objetos.
● boolean
● string
● array
● tuple
● enum
enum Sizes {
Small,
Medium,
Large,
}
Sizes.Small; // => 0
Sizes.Medium; // => 1
Tipos de datos básicos
● any
● null y undefined
Inferencia de tipos es lo que utiliza el compilador de TypeScript para determinar los tipos automáticamente.
TypeScript puede inferir tipos durante la inicialización de variables, cuando se establecen los valores predeterminados
de los parámetros y al determinar los valores de retorno de la función.
// function return
function add(a: number, b: number) {
return a + b;
}
const result = add(2, 4);
result.toFixed(2); // ✅
result.length; // ❌ - length is not a property of number types
Inferencia de tipos
Cuando un tipo se está infiriendo de varios tipos posibles, TypeScript utiliza un algoritmo de Mejor
tipo común para elegir un tipo que funcione con todos los demás candidatos.
interface Animal {
kind: string;
weight: number;
}
let dog: Animal;
dog = {
kind: 'mammal',
weight: 10,
}; // ✅
dog = {
kind: true,
weight: 10,
}; // ❌ - kind should be a string
Alias Type
type Animal = {
kind: string;
weight: number;
};
let dog: Animal;
dog = {
kind: 'mammal',
weight: 10,
}; // ✅
dog = {
kind: true,
weight: 10,
}; // ❌ - kind should be a string
Generics
Hay situaciones en las que el tipo específico de una variable no importa, pero se debe imponer una
relación entre los diferentes tipos de variables.
11. Cree un array de articulos en appComponent (articles : Article [];) e inicialicelo en el constructor
16. Crear una función en appComponent para ordenar artículos por el número de votos
17. Ejecutar
Data binding
● Two-way binding: <input [(ngModel)]=“lastName">
Visibilidad entre componentes
○ Propias (Custom)
○ Construidas en Angular
■Estructurales
■Atributo
Directivas propias
•Petición get
let url = “127.0.0.1:8080/rest/usuario/"+documento;
return this.http.get(url);
Leer respuesta de servidor
this.usuarioService.getUsuario(this.usuario.documento).subscribe(
data => {
this.data = data;
console.log (this.data);
},
error => {
console.log(error);
alert("e2" + error);
}
);
Ciclo de vida de un componente
Ejercicio propuesto
Reglas básicas
1. Cada aplicación debe iniciar al menos un componente, el componente raíz
de la aplicación.
● Sintaxis
-----------------------------------------------------------------------------
----------------------------------------------------------------------------
var materials = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'];
console.log(materials.map(material => material.length));
Funciones de flecha (=>)
● Función tradicional
● Función de flecha
Funciones de flecha (=>)
clickStream: ---c----c--c----c------c-->
vvvvv map(c becomes 1) vvvv
---1----1--1----1------1-->
vvvvvvvvv scan(+) vvvvvvvvv counterStream: ---1----2--3----4------5-->
Ejercicio
● Digamos que queremos un nuevo stream al considerar los clics triples como los clics dobles o, en general,
los clics múltiples (dos o más).
Mantra Rx
Patrón Observer
● Subject: es el objeto que utilizaremos para emitir nuevos valores o cambios a los suscriptores
● Observable: es el objeto que gestiona la lista de suscriptores y que notifica a éstos los cambios.
● Suscriptions: las suscripciones representan a los observadores que están a la escucha de cambios sobre
el subject.
Tipos de subjects en Angular
● El objetivo de este patrón es proporcionarnos una manera de acceder a los elementos de un objeto
agregado, de forma secuencial, sin exponer sus detalles.
Programación reactiva
Conceptos básicos de Rx
Complete()
Error()
Observables hot y cold
● Hot: Comienza a emitir eventos incluso antes de que cualquier observer se suscriba.
● Los operadores te permiten transformar, combinar, manipular, y trabajar con las secuencias de items
emitidos por los observables.
● Permiten componer secuencias asincronas juntas de manare declarativa con todos los beneficios de
eficiencia de los callbacks pero sin los inconvenientes de anidacion de los mismos.
Creation operators
● create: Crea un observable a partir de una función recibida y esta define cómo el observable va a emitir los
valores
Creation operators
● concatMap
Transformation operators
● groupBy
Transformation operators
● buffer
Transformation operators
● window
Filtering operators
● debounce
Filtering operators
● distinctUntilChange
Filtering operators
--a------|->
● Rx
Todo Junto
El boton refresh
● Merge
● DRY
Modelando los 3 sugerencias
con streams