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

      在当前调用分页组件所在模块ts文件中导入 PaginationModule 模块,如下:
        import { PaginationModule } from 'ngx-bootstrap/pagination';
      并在import:[]中注入PaginationModule.forRoot(),如:
      

   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="&lsaquo;" nextText="&rsaquo;" [boundaryLinks]="true" firstText="&laquo;" lastText="&raquo;" 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 自定义分页组件的更多相关文章

  1. Python自定义分页组件

    为了防止XSS即跨站脚本攻击,需要加上 safe # 路由 from django.conf.urls import url from django.contrib import admin from ...

  2. Django框架---- 自定义分页组件

    分页的实现与使用 class Pagination(object): """ 自定义分页 """ def __init__(self,cur ...

  3. 基于 bootstrap 的 vue 分页组件

    申手党点这里下载示例 基于 bootstrap 的 vue 分页组件,我想会有那么一部分同学,在使用Vue的时候不使用单文件组件,因为不架设 NodeJS 服务端.那么网上流传的 *.vue 的各种分 ...

  4. vue 自定义分页组件

    vue2.5自定义分页组件,可设置每页显示条数,带跳转框直接跳转到相应页面 Pagination.vue 效果如下图: all: small(只显示数字和上一页和下一页): html <temp ...

  5. 基于 Python 的自定义分页组件

    基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...

  6. vue自定义分页组件---切图网

    vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重 ...

  7. angular自定义分页组件(实用)

    功能描述:分页,点击按钮或者下一页获取分页接口,同时active到对应页码. html模块: <page page-count="totalPage" on-click-pa ...

  8. Flex4 自定义分页组件

    自己写的Flex4分页组件,去伪存真,只实现基本的分页功能,数据过滤神马的都不应该是分页组件干的活,有呆毛才有真相: [源代码下载] Flex自从转手给Apache后人气急跌,本人也很捉鸡,尽管Apa ...

  9. jquery ajax自定义分页组件(jquery.loehpagerv1.0)原创

    简单的两个步骤截可调用 <script src="<%=basePath%>/resources/js/jquery-1.7.1.min.js"></ ...

随机推荐

  1. python项目实现配置统一管理的方法

    一个比较大的项目总是会涉及到很多的参数,最好的方法就是在一个地方统一管理这些参数.最近看了不少的python项目,总结了两种很有意思的配置管理方法. 第一种 基于easydict实现的配置管理 首先需 ...

  2. 大数据与Hadoop

    figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...

  3. 并发上下文控制包Context

    Context,是golang用来控制并发流程的库,它能方便的将主控程序的停止信号传递到goroutinue中,从而实现一键中止关联goroutinue的执行,除此之外,它还能将外部变量通过Value ...

  4. 用yourls 搭建短链接地址服务

    最近工作中遇到一个需求,将app下载地址变成短链接进行推广,索性就研究了下yourls . 发现这个玩意功能挺强大的,不但可以批量生成自己的短地址,还可以管理,统计每个短地址点击数量,还可以提供api ...

  5. 关于a标签的onclick与href的执行顺序

    onclick的事件被先执行,其次是href中定义的(页面跳转或者javascript), 同时存在两个定义的时候(onclick与href都定义了),如果想阻止href的动作,在onclick必须加 ...

  6. Python 百度ai身份证接口案例

    调用百度Ai 完成一个学生信息录入的网页小案例 添加图片,身份证信息对号入座 官方文档中心:https://ai.baidu.com/docs#/OCR-API/7e4792c7 utils.py # ...

  7. jq04--jq与ajax

    之前我们学习了一些有关jq函数的知识,现在我们看看jq与ajax方面的一些东西: 1.ajax(Asynchronous JavaScript and XML 异步的JavaScript与xml):  ...

  8. web工程迁移---在一个jboss5或jboss6中运行多个实例

    在工作中遇到的,如何在一个jboss中运行多个节点(segment). 我使用的环境是win7.jboss5.jboss6.JDK6 1.jboss5下运行多个实例 第一步不用说,首先要在环境变量中设 ...

  9. win2003 远程连接限制

    1.单击开始->运行,输入gpedit.msc,打开组策略编辑器,找到计算机配置 ->管理模版 -> Windows组件 ->终端服务.把限制连接数量的属性修改成我们需要的数字 ...

  10. [Python 从入门到放弃] 6. 文件与异常(二)

    本章所用test.txt文件可以在( [Python 从入门到放弃] 6. 文件与异常(一))找到并自行创建 现在有个需求,对test.txt中的文本内容进行修改: (1)将期间的‘:’改为‘ sai ...