Angular4.x 自定义搜索组件
Angular4 随笔(三) ——自定义搜索组件
1.简介
本组件主要是实现了搜索功能,主要是通过父子组件传值实现。
基本逻辑:
1.创建一个搜索组件,如:ng g component search
2.父组件调用子组件,并向子组件传入基础配置信息,如搜索框默认提示信息等。
3.搜索组件接收父组件传参,并在模板上进行配置,在html模板上定义点击事件,调用分页子组件自身一个方法
4.搜索组件定义发射器,当触发搜索按钮的点击事件时,发射通知
5.父组件模板调用搜索组件处,监听搜索组件发射方法,并调用自身组件方法,接收搜索组件发射携带的数据,执行自身业务逻辑
2.准备工作
搭建Angular4 环境,可以参考 我的博客 《Angular环境搭建》
在项目中引入bootstrap4
3.代码讲解
第一步:创建搜索组件
ng g component search
第二步:编写搜索组件模板
<form class="form-inline" style="float:right;margin-top:-0.7%;" ngNoForm>
<div class="form-group" class="pull-right">
<label class="sr-only" for="exampleInputAmount"></label>
<div class="input-group" id="search" >
<input type="text" class="form-control" [(ngModel)]="search" id="exampleInputAmount" placeholder="{{placeholder}}" style="height:28px;width:80%;float:right;font-size: 14px;border-radius: 0px;"/>
<div class="input-group-addon" (click)="searchDataByContent()" style="border: solid 1px #e0e0e0;border-left: 0px;padding: 5px;" ><i class="fa fa-search"></i></div>
</div>
</div>
</form>
说明:
[(ngModel)]="search",是搜索组件定义一个属性,用来存储搜索框输入的搜索内容;
placeholder="{{placeholder}}",是搜索组件定义的一个属性,接收父组件传入的值,当搜索组件没有填写值时,默认显示父组件传入的文字;
searchDataByContent,是搜索组件自定义的一个点击事件,当搜索按钮被点击时候,这个方法被触发,想父组件发射数据;
第三步:搜索组件ts文件代码,如下:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { Station } from '../stationlist/stationlist.component';
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.css']
})
export class SearchComponent implements OnInit {
@Input() placeholder:string;
//过滤内容--过滤关键字
@Input() search:string;
//子组件传递给父组件的发射器
@Output() changeStation:EventEmitter<string> = new EventEmitter();
constructor() {
}
ngOnInit() {
}
searchDataByContent(){
this.changeStation.emit(this.search);
}
}
第四步:父组件ts文件中配置传入搜索组件配置项,如:
//搜索内容
private content:string = "";
//搜索组件配置项
private placeholder:string = "请输入用户名称";
//搜索组件字段
private filterField:string = "username";
说明:可以根据自己的实际需要,通过这种方式,配置配置项
第五步:父组件html模板调用子组件,代码如下:
<div class="content-box" >
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header" style="line-height: 14px;background-color: #fff;font-size: 14px;">
<i class="glyphicon glyphicon-flag" ></i>用户列表
<app-search [placeholder]="placeholder" (changeStation)="userChange($event)"></app-search>
</div> <div class="card-body" style="font-size:14px;">
<table class="table table-bordered ">
<thead>
<tr>
<th>序号</th>
<th>用户名称</th>
<th>邮箱</th>
<th>上次登录</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody >
<tr *ngFor="let user of users,let i = index;">
<td>{{(currentPage-1)*15+i+1}}</td>
<td>{{user.username}}</td>
<td>{{user.email}}</td>
<td>{{user.lastlogintime * 1000 | date:'yyyy-MM-dd HH:mm:ss'}}</td>
<td><span class="badge badge-success">已启用</span></td>
<td>
<a href="javascript:;" (click)="switchToCheckUser(user)">查看</a>
<a href="javascript:;" (click)="switchToEditUser(user)" style="margin-left:10px;">编辑</a>
<a href="javascript:;" (click)="deleteUser(user)" style="margin-left:10px;">删除</a>
</td>
</tr>
</tbody>
</table>
<app-pager [totalItems]="totalcounts" [currentPage]="currentPage" (pageChanges)="pageChanged($event)"></app-pager>
</div>
</div>
</div>
</div>
</div>
说明:
(changeStation)="userChange($event)",其中“changeStation”是搜索组件发射的发射器名字,在父组件中主要是起到监听搜索组件发射器作用,当搜索组件发射数据时,这个监听事件呗触发,调用userChange($event)这个方法;
userChange($event),这个方法是定义在父组件里面的一个方法,通过$event浏览器事件,我们可以拿到搜索组件发射过来的数据;
第六步:父组件定义监听页码变化的 userChange($event)方法,代码如下:
//根据搜索内容更新用户列表
userChange(filterContent:string){
this.currentPage = 1;
this.content = filterContent;
this.sign = 2;
//重新获取用户列表数据
this.getUserData();
}
4.运行截图
搜索前:

搜索后:

Angular4.x 自定义搜索组件的更多相关文章
- angular4 中自定义pagination组件
你用Angular 吗? 一.介绍 一个基于angular4 开发的可以分页的组件.组件的好处就是可以复用,复用.....作为一个前端码农,开始的分页功能实现是我用jquery写的,其他同事用的时候都 ...
- Angular4.+ ngx-bootstrap Pagination 自定义分页组件
Angular4 随笔(二) ——自定义分页组件 1.简介 本组件主要是实现了分页组件显示功能,通过使用 ngx-bootstrap Pagination分页组件实现. 基本逻辑: 1.创建一个分页 ...
- Django框架---- 自定义分页组件
分页的实现与使用 class Pagination(object): """ 自定义分页 """ def __init__(self,cur ...
- Django学习---组合搜索组件
组合搜索组件 我们都会写博客,写文章之后我们要给文章设置目录,设置类型.之后我们在浏览文章的时候就能够按类别进行精确定位到文章,那这个组合搜索我们应该怎么做呢? 首先我们先创建3张表,分别存放文章,文 ...
- weex 项目开发(五)自定义 过滤函数 和 混合 及 自定义 Header 组件
1.自定义 过滤函数 src / filters / index.js /** * 自定义 过滤函数 */ export function host (url) { if (!url) return ...
- 基于 Python 的自定义分页组件
基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...
- 如何在个人博客引擎 Hexo 中添加 Swiftype 搜索组件
在您现在看到的我的博客站点,后台使用的是 Hexo 作为博客引擎,但是默认集成的搜索组件是进行 form 提交到 Google 进行搜索的,为了更好地体验,本文介绍如何在 Hexo 博客中集成 Swi ...
- SSIS自定义数据流组件开发(血路)
由于特殊的原因(怎么特殊不解释),需要开发自定义数据流组件处理. 查了很多资料,用了不同的版本,发现各种各样的问题没有找到最终的解决方案. 遇到的问题如下: 用VS2015编译出来的插件,在SSDTB ...
- Android Studio开发基础之自定义View组件
一般情况下,不直接使用View和ViewGroup类,而是使用使用其子类.例如要显示一张图片可以用View类的子类ImageView,开发自定义View组件可分为两个主要步骤: 一.创建一个继承自an ...
随机推荐
- 【kuangbin专题】计算几何基础
1.poj2318 TOYS 传送:http://poj.org/problem?id=2318 题意:有m个点落在n+1个区域内.问落在每个区域的个数. 分析:二分查找落在哪个区域内.叉积判断点与线 ...
- 全世界最顶级黑客同时沸腾在DEF CON 25,是怎样一种体验?
2017,我在这里!圆你黑客梦!! 被称为黑客“世界杯”与“奥斯卡”的美国黑帽技术大会Black Hat和世界黑客大会DEF CON 是众多黑客心中最神圣的梦! 有位小表弟告诉我说:Black ...
- 详述MSSQL服务在渗透测试中的利用(上篇)
前言: 致力于复现最实用的漏洞利用过程. 本文将带领大家学习以下内容: 学习使用`xp_cmdshell`扩展存储过程 学习调用`wscript.shell` 学习MSSQL写文件 学习沙盘模式提权 ...
- 【AWK】:常用总结
单机文本数据处理,常用AWK,总结一下AWK最常用的要点,备忘备查. 1.What is AWK(1)Aho.Weinberger.Kernighan三位发明者名字首字母:(2)一个行文本处理工具: ...
- linux防火墙(三)—— iptables语法之匹配条件
一.iptables规则的匹配条件类型有三类 1.通用匹配:可直接使用,不依赖于其他条件或扩展,包括网络协议.IP地址.网络接口等条件 2.隐含匹配:要求以特定的协议匹配作为前提,包括端口.TCP标记 ...
- JS生成某个范围的随机数【四种情况详解】
JS没有现成的函数,能够直接生成指定范围的随机数. 但是它有个函数:Math.random() 这个函数可以生成 [0,1) 的一个随机数. 利用它,我们就可以生成指定范围内的随机数. 而涉及范围的 ...
- win10+Theano+GPU
1. cuda + cudnn 首先还是要先安装GPU库,具体和caffe安装中一样. 2. Theano 为防止下载速度慢,配置清华镜像 conda config --add channels ht ...
- mvn cli 搭建项目架构
创建如图所示目录结构 在system-parent创建如下目录 ├─system-dao ├─system-domain ├─system-service └─system-web 创建system- ...
- 集合框架_DAY16
1:List及其子类(掌握) (1)List的特点: Collection |--List:元素有序(存入顺序和取出顺序一致),可重复. |--Set:元素无序,唯一. ...
- Windows下的Jdk 1.8*安装并配置(图文详解)
不多说,直接上干货! 简单说下,jdk1.8*的下载,见http://www.cnblogs.com/zlslch/p/5658383.html 双击jdk-8u60-windows-x64.exe运 ...