博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular使用管道实现搜索功能
阅读量:5884 次
发布时间:2019-06-19

本文共 1868 字,大约阅读时间需要 6 分钟。

  hot3.png

之前在没学精angular的时候,想实现搜索功能的时候,总是想着从数据库里获取搜索的结果,可殊不知,原来在angular中只需要简单的几行代码就实现了最常用的搜索功能.

下面就来说说如何实现:

1.

export class person{  constructor(    public name:string,    public age:number  ){  }}
persons:Array
=[ new person('tom',20), new person('lilei',22), new person('lilei',23), new person('lilei',24), new person('lilei',25), new person('lilei',26), new person('lilei',23), new person('lilei',24), new person('lilei',25), new person('lilei',26), new person('lilei',22), new person('lilei',21), new person('lilei',29) ]

 

定义数组,根据age 来显示结果

2.显示到页面上:

  • name:{
    {person.name}}
    age:{
    {person.age}}

formControl 是表单中的一个指令, 当input表单内容改变的时候,agefilter就会发射改变后的内容

3.获得内容之后 在组件中订阅改变后的内容

private agefilter:FormControl=new FormControl() constructor() {     this.agefilter.valueChanges.debounceTime(500).subscribe((value)=>{      this.keyword=value    })  }

需要在头部引入

import { FormControl } from '@angular/forms';import 'rxjs/Rx';

debounceTime()这个函数可以提高用户的体验.

另外还需要在app.module中引入ReactiveFormsModule.

4.接下来写管道了.

使用ng指令 ng g pipe pipe/searchPipe

代码如下

import { Pipe, PipeTransform } from '@angular/core';@Pipe({  name: 'filter'})export class FilterPipe implements PipeTransform {    transform(list: any[], filterField:string,keyword:string): any {    if(!filterField || ! keyword){      return list    }        return list.filter((item)=>{      // console.log(item)      let val= item[filterField]      console.log(val);      return val >=keyword    });  }}

这个过滤需要两个参数,第一个参数:是依据哪个参数来搜索,是age还是name,

第二个参数是Input的内容.

if(!filterField || ! keyword){

      return list
    }

如果两个参数有一个为空的话,返回list.

return list.filter((item)=>{

      // console.log(item)
      let val= item[filterField]
      console.log(val);
      return val >=keyword
    });

页面只需要返回false或者true来控制是否显示,false为不过滤了 是显示,相反则显示

之后在页面中应用即可.

5.在页面中即可

 

转载于:https://my.oschina.net/kaykie/blog/896281

你可能感兴趣的文章
js判断checkbox是否选中
查看>>
Eclipse中修改代码格式
查看>>
GRUB Legacy
查看>>
关于 error: LINK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案...
查看>>
Linux 进程中 Stop, Park, Freeze【转】
查看>>
文件缓存
查看>>
PHP盛宴——经常使用函数集锦
查看>>
重写 Ext.form.field 扩展功能
查看>>
Linux下的搜索查找命令的详解(locate)
查看>>
MySQL查询优化
查看>>
android app启动过程(转)
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>