angular - 如何使用 Angular 2 通过选择下拉列表过滤数据?

标签 angular angular2-forms angular2-directives

我想根据使用 Angular 2 的表格内的下拉选择显示来自 JSON 数据的不同值。

<div>
    <label for="input-one">select</label>
</div>
<div>
    <select>
        <option value="">--- Select ---</option>
        <option value="ABC">ABC</option>
        <option value="def">def</option>
   </select>
</div>

例如:

如果您选择 ABC,它应该显示与表中 JSON 数据中的 ABC 匹配的值。如果您选择 def,它应该显示来自表中 JSON 数据的匹配值。

我想在 Angular 2 中执行此操作。请建议我可能的解决方案。

最佳答案

最简单的方法是将 selectngModel 绑定(bind),并将选择值传递给与对象匹配的函数。

示例 html:

<div>
    <select [(ngModel)]="selected" (ngModelChange)="onSelect(selected)">
        <option *ngFor="let option of options" 
                [value]="option"> 
          {{ option }}
        </option>
   </select>
</div>
<p></p>
<div>Selected Option</div>
<div>{{ selected }}</div>

<table>
  <th>Value</th>
  <th>id</th>
  <tr *ngFor="let x of selectedData">
    <td>{{x?.value}}</td>
    <td>{{x?.id}}</td>
  </tr>
</table>

示例组件.ts:

someData = [{ value: "ABC",id:"123"},
          { value: "ABC",id:"12"},
          { value: "DEF",id:"23"},
          { value: "DEF",id:"1233"},
          { value: "ABC",id:"13"},
          { value: "DEF",id:"1"},
          { value: "DEF",id:"34"},
          { value: "ABC",id:"56"},
          { value: "ABC",id:"13"},
          { value: "DEF",id:"123"},
          { value: "HIJ",id:"113"}]

options =['ABC', 'DEF']

selected;
selectedData;

constructor(){
  this.selectedData = this.someData;
}

onSelect(val){
  console.log(val);
  this.selectedData = this.someData.filter(x => x.value == val)
}

demo

关于angular - 如何使用 Angular 2 通过选择下拉列表过滤数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45111010/

相关文章:

javascript - 绑定(bind)到 ngFor 内的对象数组,将所有输入绑定(bind)在一起

angular - 如何检查 ts 组件文件 Angular 2 中模板表单的验证?

jhipster - 在 JHipster Angular 2 应用程序中从本地系统添加自定义 JS 文件

typescript - Angular 2 - 直接从 Observable 返回数据

angular - 如何使用 3rd 方 JS 组件进行 Angular2/4 验证

angular - 表单控件 valueChanges 给出之前的值

javascript - Angular2 - 在客户端需要模块

Angular 2 自定义服务未注入(inject)指令中

javascript - OnChanges 不会在部分对象更改时触发

css - Bootstrap 下拉列表 - 更改菜单项的显示属性