Mostrando entradas con la etiqueta template reference variable. Mostrar todas las entradas
Mostrando entradas con la etiqueta template reference variable. Mostrar todas las entradas

viernes, 26 de enero de 2018

Template Reference Variables

En una entrada anterior vimos brevemente lo que son las template reference variables o variable de referencia de plantillas en Angular.

Una variable de referencia de plantilla es una referencia a un elemento o directiva del DOM dentro de una plantilla.
Se declara utilizando el prefijo # o bien la etiqueta ref- as dentro del elemento html.

Un ejemplo típico es un elemento input text del cual podemos obtener su valor accediendo a la propiedad value.

En el siguiente ejemplo obtenemos un número de teléfono y mostramos un mensaje cuando se hace click en un botón.




En el ejemplo anterior "telefono" hace referencia a un HTMLElement por lo que podemos acceder a todas sus propiedades y métodos de cualquier HTMLElement (id, name, value, etc.)

Esto puede resultarnos útil en ocasiones en las que no necesitamos crear un formulario para obtener el valor de un único elemento, como en el ejemplo anterior.

Sin embargo, con las Template Reference Variables podemos ir "más lejos"y referenciar también a un componente.

Imaginemos por ejemplo que tenemos un componente como el HelloComponent que crea por defecto stackblitz al que le hemos añadido tres variables privadas (para el nombre, apellido y email), y un método público que unicamente devuelve el email.

import { Component, Input } from '@angular/core';

@Component({
selector: 'hello',
template: `<h1>Hello {{name}}!</h1>`,
styles: [`h1 { font-family: Lato; }`]
})
export class HelloComponent {
@Input() name: string;
private nombre: string= 'Jorge';
private apellido: string = 'Trigueros';
private mail: string ='jorge.trigueros@gmail.com';

public mostrarEmail(){
return this.mail;
}
}

Podríamos referenciar el componente como una variable de referencia de plantilla de igual manera que como hemos hecho anteriormente con el HTMLElement, es decir:

<hello #hola></hello>

y de esta forma acceder tanto a las propiedades como a los métodos de dicho componente, tanto si son declarados privados como públicos.

 Es decir, podemos hacer lo siguiente:

<hello #hola></hello>
{{hola.nombre}} {{hola.apellido}}
{{hola.mostrarEmail()}}

De esta forma estamos accediendo tanto a las variables privadas del componente como al método que muestra el email accediendo "a través" de la variable de referencia del componente!!!

El resultado es el que se muestra en la pantalla siguiente:




Si bien no es la mejor forma de acceder a las variables y propiedades de un componente, en ocasiones se trata de una forma rápida que nos puede resultar de utilidad en determinados casos.

Espero que esta entrada haya servido para conocer un poco mejor las Template Reference Variables.


jueves, 22 de junio de 2017

Angular2: variable de referencia de templates

En la entrada de hoy vamos a ver las variables de referencia de plantillas.
Una variable de referencia de plantilla es una referencia a un elemento o directiva DOM dentro de una plantilla.
Se declara utilizando el prefijo # o bien la etiqueta ref- as dentro del elemento html. 
Asi por ejemplo, #edad, ref-edad serían declaraciones válidas.

Vamos a ver mejor su uso con un ejemplo. 

import { Component } from '@angular/core';

@Component({
selector: 'app-template-variable',
template: `
Nombre: <input type="text" #nombre placeholder="Introduce tu nombre">
<br> Edad: <input type="text" ref-edad placeholder="Introduce tu edad">
<br> Email: <input type="email" #email placeholder="Introduce tu email">
<br> <button (click)="mostrarDatos(nombre.value, edad.value, email.value)">
Mostrar datos</button>
`
})
export class TemplateVariableComponent {

mostrarDatos(nombre, edad, email) {
console.log(nombre);
console.log(edad);
console.log(email);
}

}

Como podemos observar en el código, hemos creado tres variables de referencia en la plantilla. Dos de ellas estan declaradas como #nombre y #email, y la restante con la otra forma permitida, es decir, con ref-edad.

Al hacer click en el botón, llamamos al método mostrarDatos que muestra en la consola los valores pasados como parametros al mismo. Estos parametros son los valores de los elementos del formulario.

Código disponible en https://gist.github.com/jorgetrigueros/951cc37f6d41b82403682ec7e82fef2a