Vincular elemento seleccionado a objeto en Angular 2
Angular 2 es un marco popular que se utiliza para crear aplicaciones web. Una de las tareas más comunes en Angular 2 es vincular un elemento seleccionado a un objeto.
Este artículo aprenderá a usar las directivas ng-for
y ng-value
para vincular un elemento de selección con un objeto en Angular 2.
Use el ng-for
y el ng-value
para vincular un elemento seleccionado a un objeto en Angular 2
Ng-For
es una directiva de plantilla integrada que permite recorrer de forma sencilla una colección de elementos, como un array o un objeto, y crear una plantilla para cada uno.
*ngFor="let <value> of <collection>"
La directiva ng-value
vincula el elemento seleccionado a un objeto. Especifica el nombre de la propiedad en el objeto que debe asignarse al valor del elemento seleccionado.
<input ng-value="expression"></input>
A veces, los principiantes se confunden entre el valor ng
y el valor
. Entonces, si está trabajando para vincular un elemento de selección con un objeto en Angular 2, debe conocer la diferencia entre ng-value
y value
.
la diferencia entre el ng-value
y el value
en Angular
La diferencia es que value
es siempre una cadena, mientras que ngValue
te permite pasar un objeto. Por ejemplo, tiene un caso de uso en el que necesita mostrar los nombres de los elementos en el menú desplegable.
Y al elegir un solo objeto del menú, debe seleccionar la identificación del objeto para buscar en la base de datos. Sería útil usar ngValue
en tal escenario porque necesita un Objeto.
Además, el modelo de objeto que desea poblar debe estar definido en su objeto.
Haga clic aquí si desea obtener más información sobre ng-value
.
Pasos para vincular un elemento seleccionado a un objeto en Angular 2
A continuación se detallan algunos pasos básicos a seguir.
- Agregue el atributo
ng-model
al elemento seleccionado. - Agregue el atributo
selected
al objeto que desea vincular. - Vincule la propiedad del objeto al elemento
select
con una sintaxis de llaves,{{obj.property}}
.
Pongamos un ejemplo que nos ayudará a entender todos los pasos en detalle.
En primer lugar, crearemos un componente llamado AppComponent
. Luego crearemos un objeto de interfaz con el nombre de ejemplo
que muestra id
y name
.
En este caso, tanto id
como name
almacenan cadenas. Después de los dos pasos anteriores, es hora de modificar las opciones agregando información.
El código completo /app.component.ts
se proporciona a continuación.
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Demo';
selectedObject : example;
SimpleExample = [
{id: 'Welcome to New York City', name: 'New York'},
{id: 'Welcome to Japan', name: 'Japan'},
{id: 'Welcome to Singapore', name: 'Singapore'},
{id: 'Welcome to Delft', name: 'Delft'}
]
}
interface example{
id:string;
name:string;
}
En el archivo component.ts
, hemos agregado una variable selectedObject
, un objeto example
, y lo vincularemos al elemento select
usando ngModel
.
Otra variable, SimpleExample
, incluye una colección de objetos utilizados para mostrar las opciones de selección de ngValue
.
El código completo /app.component.html
se proporciona a continuación.
<h2>Angular 2 Select Example</h2>
<select [(ngModel)]="selectedObject">
<option *ngFor="let show of SimpleExample" [ngValue]="show">
{{show.name}}
</option>
</select>
{{selectedObject | json}}
El objeto example
ahora se ha agregado al selectedObject
. Y usamos tubería JSON para mostrarlo.
JSON Pipe puede transformar un objeto de entrada en el resultado deseado, que luego se puede asignar a una variable o pasar como argumento. Utiliza la función incorporada de JavaScript JSON.stringify()
para transformar los datos en una cadena JSON.
Para obtener más información sobre Angular JSON Pipe, haga clic aquí.
Estamos obteniendo el siguiente resultado del ejemplo mencionado anteriormente.
Haga clic aquí para verificar el código de trabajo completo mencionado anteriormente.
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook