Angular4.+ ngx-bootstrap Pagination 自定义分页组件
Angular4 随笔(二) ——自定义分页组件
1.简介
本组件主要是实现了分页组件显示功能,通过使用 ngx-bootstrap Pagination分页组件实现。
基本逻辑:
1.创建一个分页组件,如:ng g component pager
2.父组件调用子组件,并向子组件传入基础配置信息
3.分页组件接收父组件传参,并在模板上进行配置,在html模板上定义点击事件,调用分页子组件自身一个方法
4.分页组件定义发射器,当页码发生变化时,发射通知
5.父组件模板调用分页组件处,监听分页组件发射方法,并调用自身组件方法,接收分页组件发射携带的数据,执行自身业务逻辑
2.准备工作
第一步:搭建Angular4 环境,可以参考 我的博客 《Angular环境搭建》
第二步:安装ngx-bootstrap插件
使用Bootstrap4:
打开命令窗口,在当前项目下运行指令 npm install ngx-bootstrap --save (推荐)
使用Bootstrap3:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
第三步:注入PaginationModule
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
RouterModule.forChild(homeRoutes),
PaginationModule.forRoot()
],
3.代码讲解
第一步:创建分页组件
ng g component pager
第二步:编写分页组件模板
<div>
<pagination [totalItems]="totalItems" [(ngModel)]="currentPage" [itemsPerPage]="itemsPerPage" [maxSize]="maxSize" (pageChanged)="pageChanged($event)" previousText="‹" nextText="›" [boundaryLinks]="true" firstText="«" lastText="»" style="text-align: center;position: relative;left: 40%;"></pagination>
</div>
第三步:分页组件ts文件代码,如下:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; @Component({
selector: 'app-pager',
templateUrl: './pager.component.html',
styleUrls: ['./pager.component.css']
})
export class PagerComponent implements OnInit {
//存在多页,显示页码数量
maxSize:number = 3;
//每页展示条数
itemsPerPage:number = 15;
//总条数
@Input() totalItems:number;
//当前页码
@Input() currentPage:number;
//定义发射器,当页码变化时候,将变化后的数据发射出去,供监听者接收使用
@Output() pageChanges:EventEmitter<Page> = new EventEmitter(); pageChanged(event: any): void {
//通过发射器发射数据,数据包含在event中
this.pageChanges.emit(event);
} constructor() {} ngOnInit() {
} } export class Page{
constructor(
public itemsPerPage:number,
public page:number
){
this.itemsPerPage = 15;
this.page = 1;
}
}
第四步:父组件ts文件中配置传入分页组件配置项,如:
//分页组件配置项
private itemsPerpage:number ;
//总条数
private totalcounts:number;
//当前页码
private currentPage:number = 1;
第五步:父组件htaml模板调用子组件,代码如下:
<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>
第六步:父组件定义监听页码变化的 pageChanged($event)方法,代码如下:
//页码变化,重新获取用户列表数据
pageChanged(event){
//查看监听到的数据
console.log('event:',event);
this.currentPage = event.page;
this.itemsPerpage = event.itemsPerPage;
//重新获取用户列表数据
this.getUserData();
}
4.运行截图
5.备注
1.关于ngx-bootstrap使用,可以参考 http://ngx-bootstrap.com/。
2.关于分页模板使用可以参考http://ngx-bootstrap.com/。
Angular4.+ ngx-bootstrap Pagination 自定义分页组件的更多相关文章
- Python自定义分页组件
为了防止XSS即跨站脚本攻击,需要加上 safe # 路由 from django.conf.urls import url from django.contrib import admin from ...
- Django框架---- 自定义分页组件
分页的实现与使用 class Pagination(object): """ 自定义分页 """ def __init__(self,cur ...
- 基于 bootstrap 的 vue 分页组件
申手党点这里下载示例 基于 bootstrap 的 vue 分页组件,我想会有那么一部分同学,在使用Vue的时候不使用单文件组件,因为不架设 NodeJS 服务端.那么网上流传的 *.vue 的各种分 ...
- vue 自定义分页组件
vue2.5自定义分页组件,可设置每页显示条数,带跳转框直接跳转到相应页面 Pagination.vue 效果如下图: all: small(只显示数字和上一页和下一页): html <temp ...
- 基于 Python 的自定义分页组件
基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...
- vue自定义分页组件---切图网
vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重 ...
- angular自定义分页组件(实用)
功能描述:分页,点击按钮或者下一页获取分页接口,同时active到对应页码. html模块: <page page-count="totalPage" on-click-pa ...
- Flex4 自定义分页组件
自己写的Flex4分页组件,去伪存真,只实现基本的分页功能,数据过滤神马的都不应该是分页组件干的活,有呆毛才有真相: [源代码下载] Flex自从转手给Apache后人气急跌,本人也很捉鸡,尽管Apa ...
- jquery ajax自定义分页组件(jquery.loehpagerv1.0)原创
简单的两个步骤截可调用 <script src="<%=basePath%>/resources/js/jquery-1.7.1.min.js"></ ...
随机推荐
- 二进制转化为十进制Java实现
二进制转化为十进制 ①按权展开方法Java实现 /* * 按权展开法 */ public static double BinToTen1(String binary) { //查找该二进制是否存在小数 ...
- C# 中 DataTable转换成IList
在用C#作开发的时候经常要把DataTable转换成IList:操作DataTable比较麻烦,把DataTable转换成IList,以对象实体作为IList的元素,操作起来就非常方便. 注意:实体的 ...
- sql开启远程访问
我们用的是SQL Server 数据库 2008 版本,数据库配置完之后从另一台电脑访问数据库死活连接不上,提示信息如下 “ 无法连接到 *.*.*.*. 在于SQL Server建立连接时出现与网络 ...
- 基于alpine用dockerfile创建的爬虫Scrapy镜像
一.下载alpine镜像 [root@DockerBrian ~]# docker pull alpine Using default tag: latest Trying to pull repos ...
- vue教程3-02 vue动画
vue教程3-02 vue动画 以下代码,已经用包管理器下载好vue,animate <!DOCTYPE html> <html lang="en"> &l ...
- CentOS6.8 安装 Oracle11.2.0.4
1. 安装操作系统 安装的时候选择中文+英文支持 注意分区: swap sda盘做系统盘 sdb盘做数据盘 配置完成后的服务器分区路径信息: [root@dbserver ~]# df -h File ...
- android开发学习——day2
简单了解了android stdio的操作方式,今天着手于探究活动(Activity) 了解了基本活动与手动创建活动的方法,了解了onCreate()方法,了解了创建和加载页面布局(layout) 新 ...
- 转:TCP为什么要3次握手和4次挥手时等待2MSL、 TCP如何保证消息顺序以及可靠性到达
关于tcp三次握手.四次挥手可以看这里:TCP与UDP的差别以及TCP三次握手.四次挥手 1.TCP为甚要3次握手? 在谢希仁著<计算机网络>第四版中讲“三次握手”的目的是“为了防止已失效 ...
- 查看MySQL 表结构
前言:最近在实习中,做到跟MySQL相关的开发时,想起了好久前的一个笔试题——查看数据库表结构有哪几种方法: (一)使用DESCRIBE语句 DESCRIBE table_name; 或DESC ta ...
- 五:理解控件的运行机制(例:基于Control命名空间的简单控件)
一:先用最简短的话说点理论的1.asp.net中所有的标准控件都可以重写 2.和控件相关的命名空间有 System.Web.UI.Control是所有控件的基类只提供简单的呈现逻辑,不支持样式表 Sy ...