Pra*_*eep 6 drop-down-menu typescript angular
我正在开发angular 2应用程序,在我目前的项目中,我想要显示基于年份,品牌,型号的下拉值的功能.例如,如果我选择本田,那么在模型下拉列表中仅显示本田车型.
默认情况下,我将绑定年份,品牌和型号的完整数据.
这是我的观点.
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>
Run Code Online (Sandbox Code Playgroud)
我将从My Own API获得上述数据.
您能告诉我如何在angular 2应用程序中编写typescript代码以获得上述功能.
您唯一需要做的就是跟踪change
select-input 的事件并更改另一个select-input的来源.Angular2将完成剩下的工作.
使用选中的value
:
@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 = [];
}
}
}
Run Code Online (Sandbox Code Playgroud)
live-demo:https://plnkr.co/edit/GDXsPt4aiS7vus6oPvuU?p = preview
UPDATE
或者您可以使用selectedIndex
:(注意这-1
会导致您的第一个"选择" - 项目.
@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 = [];
}
}
}
Run Code Online (Sandbox Code Playgroud)
live-demo:https://plnkr.co/edit/wugNC6S27FB48EtRN906?p=preview
归档时间: |
|
查看次数: |
28604 次 |
最近记录: |