> For the complete documentation index, see [llms.txt](https://ngchallenges.gitbook.io/project/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ngchallenges.gitbook.io/project/interpolacion.md).

# 🧔🏻 Interpolación {{}} 🧔🏻

La interpolación es el concepto mas básico que se emplea en Angular.

## ¿Qué es la interpolación?

![](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnKcE_zDlS5Vo8Ig7Vw%2F-LnKcIF6Ob2S7qEQD4ms%2Fangular-bigote2.png?alt=media\&token=6e71f98a-e53e-4c64-9850-0930e6c1f41e)

La interpolación es su definición más básica nos permite obtener la información  definida en la lógica y mostrarla en el HTML.

En Interpolación se utiliza la sintaxis `{{ valor }}`

```markup
<h3>2 + 2 es igual a {{2 + 2}}</h3>
```

{% hint style="info" %}
&#x20;se usan las dobles llaves {{}}, que visualmente se parece a un mostacho o bigote.
{% endhint %}

A la interpolación, se le conoce como interpolación de cadenas, también conocida en inglés como "string interpolation".

A su sintaxis se le conoce como "moustache syntax" o sintaxis de bigote

Lo que se coloca entre las dobles llaves son llamadas expresiones. Podemos crear expresiones simples y complejas.

Cualquier expresión al final de cuentas se convertirá en una cadena y eso es lo que se colocará en la vista del componente.

Podemos ver expresiones con operaciones matemáticas.

```
{{ 2 + 2 }}
```

Expresiones con operadores lógico de negación:

```
{{ !valor }}
```

Expresiones que son devueltas en un método de componente. Lo que devuelva ese método es lo que se colocará en el template.

```
{{ metodoComponente() }}
```

## Reto Básico

Vamos a crear una mini galería dónde usaremos el concepto de interpolación.&#x20;

Para nuestra App vamos a seguir los siguientes pasos:

### Paso 1

Crearemos nuestro "**Hello Angular**", usando un IDE online como **Stackblitz**, podemos ver la guía de **Stackblitz** en la sección de "Guías útiles" .

Vamos a la página de **stackblitz.com** y creamos nuestra App de Angular.

![Página inicial de Stackblitz](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnG8BPRgn1H0x-Bmml7%2F-LnG9J-iU4kiVUIFRr-f%2FScreen%20Shot%202019-08-26%20at%208.04.27%20PM.png?alt=media\&token=6ed369b6-fb4c-4390-aaee-246d3874cbd1)

![Creamos nuestra App de Angular](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnG8BPRgn1H0x-Bmml7%2F-LnG9QWC0USqvgh_zn5q%2FScreen%20Shot%202019-08-26%20at%208.06.10%20PM.png?alt=media\&token=493b67a6-be22-415e-a4cc-a643f8e21012)

![Hello Angular](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnG8BPRgn1H0x-Bmml7%2F-LnG9WYWeA8dikNawYpN%2FScreen%20Shot%202019-08-26%20at%208.10.54%20PM.png?alt=media\&token=29b6a322-58b3-4728-80b9-1983d4c25b04)

### Paso 2

Vamos a ir al archivo "**app.component.html**", seleccionamos el contenido y lo borramos.

![Seleccionamos el contenido y lo borramos](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnG9_tAcEldOz09y7rD%2F-LnG9yASNPheMqYTh1Gx%2FScreen%20Shot%202019-08-26%20at%208.15.11%20PM.png?alt=media\&token=54b78fbe-2500-4ed0-a210-eb1aad38203f)

### Paso 3

En el archivo **app.component.html** vamos a colocar unas etiquetas para los títulos y una para una imagen.&#x20;

Vamos a incluir en nuestra imagen la siguiente url de un gif animado: <https://cdn2.thecatapi.com/images/49f.gif>

![](https://cdn2.thecatapi.com/images/49f.gif)

Nos queda nuestro archivo con el siguiente código:

{% code title="app.component.html" %}

```
<h1>Interpolación</h1>
<h2>Reto básico</h2>
<img src="https://cdn2.thecatapi.com/images/49f.gif" />
```

{% endcode %}

### Paso 4

Hemos añadido nuestra imagen, pero la idea es crear una mini galería con varias imágenes. Podemos duplicar la etiqueta de la imagen y tendríamos algo como esto:

![Duplicamos la etiqueta \<img />](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnGC-9WTuSCkURfLzBy%2F-LnGCs6uBm7w0c0APRGT%2FScreen%20Shot%202019-08-26%20at%208.35.03%20PM.png?alt=media\&token=5106f770-f701-47e4-b707-93ae15fde0f5)

Usaremos la interpolación para la url de la imagen, entonces solo dejaremos una etiqueta de imagen y crearemos una variable en el archivo **app.component.ts**, llamada **img** donde pondremos la ruta de la imagen.

{% hint style="info" %}
No modifiques nada más del contenido de **app.component.ts**, la sintaxis que ves en ese archivo es la básica de Angular.
{% endhint %}

Nos quedará un código como el siguiente:

{% code title="app.component.ts" %}

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

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';
  img = 'https://cdn2.thecatapi.com/images/49f.gif';
}

```

{% endcode %}

Usaremos una API de gifs animados para tener más gifs animados en nuestra etiqueta **\<img />**, colocaremos a nuestra variable **img** la url del API: [https://thecatapi.com/api/images/get?format=src\&type=gif](https://thecatapi.com/api/images/get?format=src\&type=gif?results_per_page=)

![](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnGC-9WTuSCkURfLzBy%2F-LnGEIeOvUvERiMYF-3I%2FScreen%20Shot%202019-08-26%20at%208.48.18%20PM.png?alt=media\&token=65d0ce19-6661-4627-acfa-f74df294ffeb)

### Paso 5

Asignaremos en nuestra etiqueta **\<img />** la url almacenada en nuestra variable.

Cambiaremos el texto de la variable **name** y pondremos en su lugar el texto Interpolación y lo incluiremos en uno de los títulos.

{% code title="app.component.html" %}

```markup
<h1>{{name}}</h1>
<h2>Reto básico</h2>

<img src="{{img}}" />
```

{% endcode %}

![Agregamos las variables en el HTML](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnGC-9WTuSCkURfLzBy%2F-LnGFPt4_ZSRSadwvZau%2FScreen%20Shot%202019-08-26%20at%209.17.29%20PM.png?alt=media\&token=a026d160-ddc5-46d0-845b-a289abd02c4e)

Duplicamos la etiqueta \<img /> 6 veces para tener nuestra galería

![Duplicamos la etiqueta \<img />](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnGGEPzkW3BiA7S1rOs%2F-LnGGQ3KPH6KZbE2ohQ-%2FScreen%20Shot%202019-08-26%20at%209.19.33%20PM.png?alt=media\&token=4719f995-c3c6-405c-98d3-282efa3f2d5e)

### Paso 6

Ahora tenemos una galería con la imagen repetida, podemos tener diferentes imágenes añadiendo en nuestra variable **img** "?results\_per\_page=", esta modificación la hacemos en nuestro **app.component.ts**

{% code title="app.component.ts" %}

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

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Interpolación';
  img = 'https://thecatapi.com/api/images/get?format=src&type=gif?results_per_page=';
}
```

{% endcode %}

En nuestro HTML a la variable **img** le podemos concatenar un número para que la imagen de nuestro gato cambie.

{% code title="app.component.html" %}

```markup
<h1>{{name}}</h1>
<h2>Reto básico</h2>

<img src="{{img+1}}" />
<img src="{{img+2}}" />
<img src="{{img+3}}" />
<img src="{{img+4}}" />
<img src="{{img+5}}" />
<img src="{{img+6}}" />
```

{% endcode %}

![Concatenamos un número a la variable img](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnGGEPzkW3BiA7S1rOs%2F-LnGHXdR248NnJ-LOcg6%2FScreen%20Shot%202019-08-26%20at%209.17.04%20PM.png?alt=media\&token=e70e7dc6-a4e2-4308-a300-d3b7d295135d)

Podemos cambiar el css de las imágenes para poder ver nuestras imágenes con el mismo alto.

![Editando el height](https://2661087327-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LbFy569GFu09bPpzMDJ%2F-LnGGEPzkW3BiA7S1rOs%2F-LnGHuHHYL9eh0Dwmz1H%2FScreen%20Shot%202019-08-26%20at%209.08.01%20PM.png?alt=media\&token=46bead13-f27b-4674-b85f-a3f4a486751d)

Podemos editar más el CSS para hacer nuestra galería mucho más bonita, pero esto te queda de tarea.&#x20;

Podemos usar más conceptos de Angular como las directivas para evitar duplicar las etiquetas \<img />, pero esto lo veremos en el próximo articulo.&#x20;

## Demo!!!&#x20;

Puedes ver el ejercicio completo en la siguiente:

{% embed url="<https://stackblitz.com/edit/interpolacion>" %}
