加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用Angular 2应用程序中的typescript显示基于其他下拉值的

发布时间:2020-12-17 17:51:15 所属栏目:安全 来源:网络整理
导读:我正在开发angular 2应用程序,在我目前的项目中,我想要显示基于年份,品牌,型号的下拉值的功能.例如,如果我选择本田,那么在模型下拉列表中仅显示本田车型. 默认情况下,我将绑定年份,品牌和型号的完整数据. 这是我的观点. VehicleComponent.html div class="ro
我正在开发angular 2应用程序,在我目前的项目中,我想要显示基于年份,品牌,型号的下拉值的功能.例如,如果我选择本田,那么在模型下拉列表中仅显示本田车型.

默认情况下,我将绑定年份,品牌和型号的完整数据.

这是我的观点.

enter image description here

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>

我将从My Own API获得上述数据.

您能否告诉我如何在angular 2应用程序中编写typescript代码以获得上述功能.

解决方法

您唯一需要做的就是跟踪选择输入的更改事件并更改另一个选择输入的来源. Angular2将完成剩下的工作.

使用所选值:

@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 = [];
    }
  }
}

现场演示: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.3"];
    }
    else if (obj.id == 2) {
      this._values2 = ["2.1","2.3"];
    }
    else if (obj.id == 3) {
      this._values2 = ["3.1","3.3"];
    }
    else {
      this._values2 = [];
    }
  }
}

现场演示:https://plnkr.co/edit/wugNC6S27FB48EtRN906?p=preview

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读