Escolar Documentos
Profissional Documentos
Cultura Documentos
Duración: 20 Horas
1. Introducción a Angular 2
¿ Qué es Angular 2 ?
Diferencias entre Angular JS y Angular 2
¿ Qué es TypeScript ?
Arquitectura MVC y MVVM
Instalación de Angular 2
Hola Mundo !!! Con Angular 2
¿ Qué es Angular 2 ?
• Nuevo Framework escrito desde cero
• Utiliza TypeScript (sintaxis Java y C#)
• ECMAscript 6 = ECMAscript 5 con Babel
• Lazy SPA
• Renderizado Universal y en el Servidor
• Data Binding Flow
• Componente Estancos
Angular JS y Angular 2
5
¿ Qué es TypeScript ?
6
Arquitectura MVC
Model-View-Controller
Arquitectura MVVM
Model-View-ViewModel
Instalación de Angular 2
• Instalamos node js
https://nodejs.org/dist/v7.4.0/node-v7.4.0-x64.msi
npm install –g npm ver. 4.0.5
• Instalamos TypeScript
npm install -g typescript ver. 2.1.5
tsc --version
13
TypeScript, clases y objetos
En TypeScript podemos programar un clase que utilizaremos como
patrón para crear objetos. Cada clase constituye un nuevo tipo de dato.
class Saludo {
private mensaje: string;
constructor(mensaje: string) {
this.mensaje = mensaje;
}
public saluda() {
return "Hola, " + this.mensaje;
}
}
console.log(msg.saluda())
14
TypeScript, clases y objetos II
En TypeScript podemos programar un clase definiendo la visibilidad de
las propiedades ya sean funciones o variables, con los siguientes
valores:
• public
• protected
• private
interface ClockInterface {
currentTime: Date;
setTime(d: Date);
}
setTime(d: Date) {
this.currentTime = d;
}
interface Shape {
color: string;
}
square.color = "blue";
square.sideLength = 10;
17
TypeScript, herencia
Las interfaces en TypeScript puede extenderse y ser utilizada para crear
objetos con todas las propiedades especificadas.
class Animal {
nombre: string;
constructor(nombre: string) {
this.nombre = nombe;
}
move(distanciaMetros: number = 0) {
console.log(this.nombre + “ se mueve ” + distanciaMetros + “m.”);
}
}
20
2.1 Sintaxis de un Componente
@Component({
selector: 'my-app',
templateUrl: ‘templates/formulario-alta.html‘,
styleUrls: [‘css/form-alta.css’]
})
Referencia: https://angular.io/docs/ts/latest/api/core/index/Component-decorator.html
21
2.2 Ciclo de vida de los Componentes
Los componentes presentan un ciclo de vida. Nosotros utilizando hooks
podemos actuar cuando estos se produce.
ngOnInit(): void {
}
}
22
2.2 Ciclo de vida de los Componentes
ngOnInit, es llamado cuando se inicializa el componente una vez Angular
haya mostrado las propiedades vinculadas a datos. Es llamado solo una vez,
después del primer llamado a ngOnChanges.
ngDestroy, es llamado justo antes de que Angular destruya el componente.
ngDoCheck, es llamado ante cualquier detección de cambio, justo después
de ngOnChanges.
ngOnChanges, es llamado cuando cambian las propiedades de entrada
vinculadas a datos. El método recibe un objeto SimpleChanges con los
valores de las propiedades actuales y anteriores.
ngAfterContentInit, es llamado después de cargar el contenido en la vista. Se llama
después del primer ngDoCheck.
ngAfterContentChecked, es llamado después de que Angular comprueba el contenido
cargado. Se llama después de ngAfterContentInit y después de cada ngDoCheck.
ngAfterViewInit, es llamado ante después de cargar todas las vistas, después de
ngAfterContentChecked.
ngAfterViewChecked, es llamado después de comprobar todas las viastas, después de
ngAfterViewInit y después de cada ngAfterContentChecked.
2.3 Relación de los Componentes
@Input, crea un atributo al selector funcionando como canal de entrada de
información. Binding de una propiedad del componente padre con una
propiedad del componente hijo.
@Output, crea un evento en el componente hijo que puede ser suscrito por
el componente padre. El componente hijo dispara el evento utilizando el
método Emit del objeto EventEmitter.
@ViewChild, almacena un selector en una propiedad. Si el selector
representa un componente nos permite acceder a todas sus Propiedades y
Métodos pudiéndolos modificar e invocar desde el componente padre.
import {Component, Input, Output, EventEmitter, ViewChild} from '@angular/core’;
import {AppComponent2} from ‘,/app.component2’;
{{ date| date }}
// output is 'Jun 15, 2015'
{{ date | date:'medium' }}
// output is 'Jun 15, 2015, 9:43:11 PM'
{{ date | date:'shortTime' }}
// output is '9:43 PM'
{{ date | date:'mmss' }}
// output is '43:11'
Referencia: https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html
Filtros para datos actualizaciones asincronas
transform(value, arg) {
return (value == true ? 'Si' : 'No');
}
}
4. Servicios
@Injectable()
export class DemoService {
public testService():string {
return 'Servicio Demo';
}
}
<div [style.color]="colorPreference">
4.1 Directivas Sintaxis
<div><a [href]=“url”>Detalle</a></div>
<div><button (click)=“enviar($event)”>Enviar</button></div>
@Directive(selector: [nombre])
export class DemoDirective {
constructor(private el: ElementRef) {
el.nativeElement.style.color = ‘red’;
}
}
33
5. Esquema de Angular 2
34
6. Routing o Single-Page Applications
Utilizando el Routing de Angular podemos crear aplicaciones de una sola página.
Estás aplicaciones se caracterizan por:
...
@NgModule({
imports: [ BrowserModule, FormsModule, routing ],
declarations: [ AppComponent, MiComponent ],
bootstrap: [ AppComponent ],
})
...
Instalación de Angular CLI
Comandos
ng new <nombre-proyecto>
ng init <nombre-proyecto>
ng e2e (protractor)
ng test (karma)
ng serve
7. Unit Testing en Angular 2
Utilizamos JASMINE para programar las pruebas unitarias (Unit-Testing) de
javascript. Se caracteriza por:
});
41
7.1 Trabajando con Jasmine
expect(true).toBe(true);
});
42
7.1 Trabajando con Jasmine
expect(x).toEqual(y);
verifica si ambos valores son iguales.
expect(x).toBe(y);
verifica si ambos objetos son iguales.
expect(x).toMatch(pattern);
verifica si el valor pertenece al patrón establecido.
expect(x).toBeDefined();
verifica si el valor está definido.
expect(x).toBeUndefined();
verifica si el valor es indefinido.
43
7.1 Trabajando con Jasmine
expect(x).toBeNull();
verifica si el valor es nulo.
expect(x).toBeTruthy();
verifica si el valor es verdadero.
expect(x).toBeFalsy();
verifica si el valor es falso.
expect(x).toContain(y);
verifica si el valor actual contiene el esperado.
expect(x).toBeLessThan(y);
verifica si el valor actual es menor que el esperado.
expect(x).toBeGreaterThan(y);
verifica si el valor actual es mayor que el esperado.
44
7.1 Trabajando con Jasmine
});
45
Curso de Angular 2
Curso de Angular 2.
Gracias.
Recuerda Angular 2 es un framework
MVVM de código abierto desarrollado por
Google y escrito en TypeScript.
Referencias:
https://angular.io/