angular - tablas - cómo mostrar los valores desplegables en función de otro valor desplegable utilizando mecanografiado en la aplicación angualr 2
select dinamico angular (1)
Estoy desarrollando la aplicación angular 2, en mi proyecto actual deseo la funcionalidad para mostrar los valores desplegables en función del año, la marca y el modelo. Por ejemplo, si selecciono Honda, solo mostraré los modelos de Honda en el menú desplegable de modelos.
De forma predeterminada vincularé los datos completos para año, marca y modelo.
Esta es mi opinión.
VehicleComponent.html
<div class="row form-group">
<div class="col-md-3">
<label class="control-label">Year*</label><br />
<select friendly-name="Year" id="year" name="year" class="col-md-6 form-control" ng-required="true" onchange=''OnChange()'' >
<option>Select</option>
<option *ngFor=''let type of lookupdetailsvehicleyearinfo''>{{type.LookupValue}}</option>
</select>
</div>
<div class="col-md-3">
<label class="control-label">Make*</label><br />
<select friendly-name="Make" class="col-md-6 form-control" ng-required="true" >
<option>Select</option>
<option *ngFor=''let type of lookupdetailsvehiclemakeinfo''>{{type.LookupValue}}</option>
</select>
</div>
<div class="col-md-3">
<label class="control-label">Model*</label>
<select friendly-name="Model" class="col-md-6 form-control" ng-required="true" >
<option>Select</option>
<option *ngFor=''let type of lookupdetailsvehiclemodelinfo''>{{type.LookupValue}}</option>
</select>
</div>
</div>
Obtendré los datos anteriores de My Own API''s.
¿Puede decirme cómo escribir el código de mecanografía en la aplicación angular 2 para la funcionalidad anterior?
-Pradeep
Lo único que debe hacer es seguir el evento de change
de su entrada de selección y cambiar la fuente de otra entrada de selección. Angular2 hará el resto.
Usando el value
seleccionado:
@Component({
selector: ''my-app'',
template: `
<div>
<h2>Hello {{name}}</h2>
<select (change)="firstDropDownChanged($event.target.value)" >
<option>Select</option>
<option *ngFor=''let v of _values1''>{{ v }}</option>
</select>
<select >
<option>Select</option>
<option *ngFor=''let v of _values2''>{{ v }}</option>
</select>
</div>
`,
})
export class App {
name:string;
private _values1 = ["1", "2", "3"];
private _values2 = [];
constructor() {
this.name = ''Angular2''
}
firstDropDownChanged(val: any) {
console.log(val);
if (val == "1") {
this._values2 = ["1.1", "1.2", "1.3"];
}
else if (val == "2") {
this._values2 = ["2.1", "2.2", "2.3"];
}
else if (val == "3") {
this._values2 = ["3.1", "3.2", "3.3"];
}
else {
this._values2 = [];
}
}
}
live-demo: https://plnkr.co/edit/GDXsPt4aiS7vus6oPvuU?p=preview
ACTUALIZAR
O puede usar el Índice selectedIndex
: (tenga en cuenta que -1
causa su primer elemento "Seleccionado".
@Component({
selector: ''my-app'',
template: `
<div>
<h2>Hello {{name}}</h2>
<select (change)="firstDropDownChanged($event.target.selectedIndex - 1)" >
<option>Select</option>
<option *ngFor="let v of _values1">{{ v.val }}</option>
</select>
<select >
<option>Select</option>
<option *ngFor=''let v of _values2''>{{ v }}</option>
</select>
</div>
`,
})
export class App {
name:string;
private _values1 = [
{ id: 1, val: "huhu" },
{ id: 2, val: "val2" },
{ id: 3, val: "yep" },
{ id: 4, val: "cool" }
];
private _values2 = [];
constructor() {
this.name = ''Angular2''
}
firstDropDownChanged(val: any) {
const obj = this._values1[val];
console.log(val, obj);
if (!obj) return;
if (obj.id == 1) {
this._values2 = ["1.1", "1.2", "1.3"];
}
else if (obj.id == 2) {
this._values2 = ["2.1", "2.2", "2.3"];
}
else if (obj.id == 3) {
this._values2 = ["3.1", "3.2", "3.3"];
}
else {
this._values2 = [];
}
}
}
live-demo: https://plnkr.co/edit/wugNC6S27FB48EtRN906?p=preview