oogle — Traducido al Mostrar texto original Opciones ¥
Angular 4 Cheat Sheet
01. Componentes
Los componentes son bloques de construccién de una aplicacién angular. Un componente es una
combinacién de plantila HTML y una clase de TypeScript (0 JavaScript). Para crear un componente en
Angular con TypeScript, cree una clase y decore con el decorador de componentes.
Considere la muestra a continuacién
import { Component } from 3
@Component({
selector
template
»)
export class HelloWorld {
+
~chipHello Angular world*
El componente se importa del paquete angular central. El decorador de componentes permite especificar
metadatos para el componente dado. Si bien hay muchos campos de metadatos que podemos usar, estos
son algunos importantes:
selector : es el nombre dado para identificar un componente. En la muestra que acabamos do ver, hello-
ng-world se usa para referirse al componente en otra plantilla 0 cédigo HTML,
plantilla : es el marcado para el componente dado. Mientras se utiliza el componente, se aplican enlaces
con variables en la clase de componente, el estilo y la l6gica de presentacién,
templateUrl : es la url de un archivo extern que contiene una plantila para la vista. Para una mejor
organizacién del cédigo, la plantilla podria moverse a un archivo separado y la ruta podria especificarse
como un valor para templateUrl
estilos : se usa para estilos especificos para el componente dado, Ellos tienen alcance al componente.Google Tadicio a: espatol [Mostar texto ofgina Opciones ¥
styleUrls : define los archivos CSS que contienen el estilo del componente, Podemos especificar uno 0
mas archivos CSS en una matriz. A partir de estos archivos CSS, las clases y otros estilos se podrian
aplicar en la plantila para el componente.
02. Enlace de datos
La interpolacién de cadenas es una manera facil de mostrar datos en una aplicacién angular. Considere
la siguiente sintaxis en una plantilla angular para mostrar el valor de una variable,
*chiHello {{title}} world”
titulo es el nombre de la variable. Observe las comillas simples (retroceso *) alrededor de la cadena, que
es la sintaxis de ES6 / ES2015 para mezclar variables en una cadena.
El fragmento de cédigo completo para el componente es el siguiente:
import { Component } from ‘@angular/core';
@Component ({
selector: 'hello-ng-world’,
template: *
»)
export class HelloWorld {
title = ‘angular 4°;
+
Para mostrar el valor en un campo de texto, use la propiedad DOM " valor” envuelta entre corchetes.
Como usa un atributo DOM, es natural y facil de aprender para cualquier persona nueva en Angular.
"Titulo" es el nombre de la variable en el componente.
Tal enlace podria aplicarse a cualquier atributo HTML. Considere el siguiente ejemplo donde el titulo se
usa como un marcador de posicién para el campo de texto.
03. Eventos
Para enlazar un evento DOM con una funcién en un componente, use la siguiente sintaxis. Envuelva el
evento DOM en paréntesis circular, que invoca una funcién en el componente
3.1 Aceptacién de la entrada del usuario
A medida que el usuario introduce valores en campos de texto o realiza selecciones en un ment
desplegable o un bot6n de opcién, los valores deben actualizarse en variables de componentes / clases.
Podemos usar eventos para lograr esto.
El siguiente fragmento de actualizaciones actualiza el valor en un campo de texto, a una variable en el
‘componente.
updateValue(event: Event){
// event.target.value has the value on the text field.
// Tt is set to the label.
‘this.label = event.target.value;
}Google — Traducido al: espafiol | Mostrar texto original Opciones ¥
Nota : Considerando que es un ejemplo basico, el parametro de evento para la funcién anterior es de tipo
any . Para una mejor verificacién de tipos, es recomendable declararlo de tipo KeyboardEvent.
3.2 Aceptar la entrada del usuario, una mejor manera
En la muestra de entrada de usuario aceptada, $ event expone mucha informacién a la funcién /
componente. Encapsula el evento DOM completo desencadenado originalmente. Sin embargo, todas las
funciones que necesita son el valor del campo de texto.
Considere la siguiente pieza de cédigo, que es una implementacién refinada de la misma. Use la variable
de referencia de la plantilla en el campo de texto.
Observe la funcién updateValue en change , que acepta el campo de valor en label (variable de
referencia de plantilla). La funcién de actualizacién ahora puede establecer el valor en una variable de
clase.
updateValue(value: any){
// It is set to the label.
this.label = value;
}
3.3 Platano en una caja
Desde Angular 2 en adelante, el enlace de datos bidireccional no esta implicito. Considera la siguiente
muestra. A medida que el usuario cambia de valor en el campo de texto, no actualiza instantaneamente el
titulo en ht
chi> {{title})
Use la siguiente sintaxis para el enlace de datos bidireccional. Combina el enlace de valor y el enlace de
evento con la forma abreviada - [()]. En una nota mas ligera, se llama platano en una caja.
{{title})
,
»Google Tadicio a: espatol [Mostar texto ofgina Opciones ¥
Para completar el proceso DI, especifique el servicio como una propiedad de parametro en el constructor.
export class SampleComponent {
‘timeValue: string = this.tine.getTime(); // Tenplate shows
constructor(private time: TimeService){
+
y
Consulte la implementacién de TimeService a continuacién,
import { Injectable } from “@angular/core’ ;
@Injectable()
export class TimeService {
constructor() { }
getTime(){
let datedbj: Date = new Date();
return *${dateObj.getDay()}/${dateObj .getMonth()}/${datedbj.getFullYear()}”
+
}
6.3 Proporcionar un servicio a nivel de médulo
Cuando TimeService se proporciona a nivel de médulo (en lugar del nivel de componente), la instancia de
servicio esta disponible en todo el médulo (y la aplicacién). Funciona como singleton en toda la aplicacién
@NgHodule({
declarations: [
‘AppComponent,,
SampleConponent
L
imports: [
BrowserModule
1,
providers: [TimeService],
bootstrap: [AppComponent]
»
export class AppModule { }
io
6.4 Sintaxis alternativa para proporcionar un servi
En la muestra anterior, la declaracién del proveedor es un atajo para lo siguiente,
// instead of providers: [TimeService] you may use the following,
providers: [{provide: TimeService, useClass: TimeService}]
Permite usar una implementacién especializada o alternativa de la clase (TimeService en este ejemplo).
La nueva clase podria ser una clase derivada o la que tenga firmas de funcién similares a la clase
original
providers: [{provide: TimeService, useClass: AlternateTimeService}]
En aras de un ejemplo, el AlternateTimeService proporciona un valor de fecha y hora. Original
TimeService proporcioné solo el valor de la fecha.Google Tadicio a: espatol [Mostar texto ofgina Opciones ¥
@injectable()
export class AlternateTimeService extends TimeService {
constructor() {
super();
getTime(){
let dateobj: Date = new Date();
return ~${dateObj..getDay()}/${dateobj .getMonth()}/${dateObj . getFullvear()}
${dateObj.getHours()}:${dateObj.getMinutes()} "5
+
,
Nota : Cuando la instruccién siguiente se utiliza para proporcionar un servicio, el inyector angular crea
una nueva instancia del servicio.
[{provide: TimeService, useClass: AlternateTimeService}]
Para usar una instancia existente del servicio, use useExisting en vez de useClass
providers: [AlternateTimeService, {provide: TimeService, useExisting:
AlternateTimeService}]
6.5 Proporcionar una interfaz y su implementacién
Puede ser una buena idea proporcionar una interfaz e implementacién como una clase o un valor.
Considera la siguiente interfaz.
interface Time{
getTime(): string
export default Times
Podria ser implementado por TimeService
@injectable()
export class TimeService implements Time {
constructor() { }
getTime(){
let dateddj: Date = new Date();
return ~${dateObj..getDay()}/${dateobj .getmonth()}/${dateObj.getFullYear()}"
}
}
En este punto, no podemos implementar la interfaz Time y la clase TimeService como la muestra anterior.
La siguiente pieza de o6digo no funciona, porque una interfaz de TypeSoript no se compila con ningtin
equivalente en JavaScript.
providers: [{provide:
Time, useClass: TimeService}] // Wrong
Para que esto funcione, importe Inject (Decorator) e InjectionToken desde @ angular / core
// create an object of InjectionToken that confines to interface Time
let Time Service = new InjectionToken