【问题标题】:How to filter data with select/dropdown using Angular 2?如何使用Angular 2通过选择/下拉过滤数据?
【发布时间】:2017-10-21 20:48:20
【问题描述】:

我想根据下拉选择显示来自 JSON 数据的不同值。

<div>
    <label for="input-one">select</label>
</div>
<div>
    <select>
        <option value="">--- Select ---</option>
        <option value="1">option1</option>
        <option value="2">option2</option>
        <option value="3">option3</option>
    </select>
</div>

这是下拉选择。根据选择显示 JSON 数据的最佳方法是什么?

例如:

  • 如果您选择1,它应该显示来自 JSON 数据的 2 个值。
  • 如果您选择2,它应该显示来自 JSON 数据的 3 个值。
  • 如果您选择3,它应该会显示所有 JSON 数据。

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

【问题讨论】:

    标签: javascript json angular typescript angular2-forms


    【解决方案1】:

    你好_小樱:)

    我不确定我是否完全理解您的问题,但我确实理解您想要显示由&lt;select&gt; 过滤的项目。如果是这种情况,我可以建议您使用:

    关于事件绑定的简短介绍 ********************************

    基本上使用 事件绑定,您可以像这样处理元素事件:

    <select (change)="onMySelectChange($event)"></select>
    

    现在在 onMySelectChange 中,您可以根据 &lt;select&gt; 的值过滤您的收藏

    关于自定义管道的简短介绍 ********************************

    在这里,您可以在外部文件中创建过滤器,例如 - myfilter.ts 然后你需要用函数transform(value: any, ...args: any[]) : any实现接口PipeTransform。

    样品管如下所示:

    import { Pipe, PipeTransform } from '@angular/core';
    
    @Pipe({
        name: 'myfilter'
    })
    export class MyFilterPipe implements PipeTransform {
        transform(items: any[], filter: Object): any {
    
            if(filter == 1){
              return items.slice(0, 2);
            }else if(filter == 2){
              return items.slice(0, 3);
            }else if(filter == 3){
              return items;
            }else{
              return [];
            }
        }
    }
    

    示例用法如下:

    <ul>
        <li *ngFor="let d of pipeFilterData | myfilter: 2">{{d.value}}</li>
    </ul>
    

    不要忘记将管道放在应用模块的声明中:

    @NgModule({
      imports: [ BrowserModule, FormsModule ],
      declarations: [ App, MyFilterPipe ],
      bootstrap: [ App ]
    })
    

    CLICK HERE TO DIG INTO DEMO CODE

    【讨论】:

    • 嗨@codtex,太棒了..这正是我想要的解决方案。非常感谢..:)
    猜你喜欢
    • 2017-12-20
    • 2021-10-29
    • 1970-01-01
    • 2023-04-03
    • 2015-11-11
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多