你用Angular 吗?

一.介绍

一个基于angular4 开发的可以分页的组件。组件的好处就是可以复用,复用.....作为一个前端码农,开始的分页功能实现是我用jquery写的,其他同事用的时候都要将我的代码拷贝过去,于是我被鄙视了。为了不继续被鄙视就开始了尝试。

二.基本功能

1.根据规定的每页数据条数,分页显示数据

2. 上下页操作数据

直接上界面图可能清晰点:

项目截图

根据图片进行讲解下:

根据你总数据条数:totalNum; 每页显示条数:pageSize,通过组件会自动给你分页显示。

eg:总数41 条数据,每页显示10条数据,则是分成5页。如果想每页显示7条,则会分成6页。

三.简要代码

架构目录图:

项目目录

有两个组件:pagination和page;  pagination是用来显示前面数据的,page是用来下面分页的。

pagination.html示例代码:

数据显示部分代码

ngb-xxx不用在意,是用的ng-bootstrap,只是为了让界面好看点。其实就是一个简单的table用来显示数据。*ngFor用来取数据,懂Angular 的人应该都会,这不是重点就不介绍了。

<page
></page> 
这里是引入page组件。但是传入了一些属性值;关于模板语法,依赖注入,自定义事件就不介绍了。只要知道这里是:pagination组件向page组件传入了几个值:pageSize(页面显示数据条数),totalNum(总数据条数),curPage(当前页码
),totalPage(总页码),pageData(每页显示数据)

其中pageSize和pageData是一样的,只是后面为了操作,多传了一个值;

那么:pageSize等值都是哪里来的呢,当然是pagination.ts里定义的:

pagination.ts代码

代码中的page就是你获得到得数据,自然totalNum就会等于数据的长度。依次算出来就好了。

pagination组件算是完成了,现在就来看看page是怎么接收到数据并进行操作的。

page.html页面的代码:

page.ts 分页数据的html

其实很简单:就一个a标签显示条数,页数的,三个button,一个显示上一页,一个页数,一个下一页。每个按钮都绑定了一个changePage事件;

看一下实现部分的代码:

page.ts分页实现部分代码

@Input是接收pagination.html组件传过来的数据。@Output是定义pagination.html页面定义的changeCurPage事件。

通过三个if else判断,对传多来的数据进行处理。其实就分为:数据只够显示一页;数据显示到最后一页;数据刷新到中间页码;这三种情况下的操作。

好了,基本就完成了。有些东西也是借助网友的想法,但是思路大致都是这样。现在我改变条数和数据量看看:

  项目截图
详情代码及效果:
https://github.com/sulishibaobei/pagination

angular4 中自定义pagination组件的更多相关文章

  1. Angular4.x 自定义搜索组件

    Angular4 随笔(三)  ——自定义搜索组件 1.简介 本组件主要是实现了搜索功能,主要是通过父子组件传值实现. 基本逻辑: 1.创建一个搜索组件,如:ng g component  searc ...

  2. Angular4.+ ngx-bootstrap Pagination 自定义分页组件

    Angular4 随笔(二)  ——自定义分页组件 1.简介 本组件主要是实现了分页组件显示功能,通过使用 ngx-bootstrap Pagination分页组件实现. 基本逻辑: 1.创建一个分页 ...

  3. vue中自定义组件(插件)

    vue中自定义组件(插件) 原创 2017年01月04日 22:46:43 标签: 插件 在vue项目中,可以自定义组件像vue-resource一样使用Vue.use()方法来使用,具体实现方法: ...

  4. Vue中调用另一个组件中自定义事件

    之前在一个场景中,遇到组件需要调用父组件中的方法tableInit(),字组件调用父组件常用的有三种方法,具体参考:https://www.cnblogs.com/jin-zhe/p/9523782. ...

  5. Flutter 中的常见的按钮组件 以及自定义按钮组件

    Flutter 里有很多的 Button 组件很多,常见的按钮组件有:RaisedButton.FlatButton. IconButton.OutlineButton.ButtonBar.Float ...

  6. 22Flutter中的常见的按钮组件 以及自定义按钮组件

    /* Flutter中的常见的按钮组件 以及自定义按钮组件 一.Flutter中的按钮组件介绍 Flutter里有很多的Button组件,常见的按钮组件有:RaisedButton/FlatButto ...

  7. 工程日记之HelloSlide(1):Swift自定义可视化组件的方法(继承UIView和在StoryBoard中设置)

    需求描述 HelloSlide是把文本自动转化成幻灯片的软件,在幻灯片中我们有SmartArt:各种各样的几何形状,并且可以自定义大小和颜色,放在幻灯片不同的位置. 为了在我们的软件中实现类似的效果, ...

  8. Python自定义分页组件

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

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

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

随机推荐

  1. js解析xml浏览器兼容性处理

    /****************************************************************************** 说明:xml解析类 ********** ...

  2. C#面向插件级别的软件开发 - 开源研究系列文章

    在现在的面向对象的分析与设计软件开发过程中,最开始就是面向对象的软件开发.但是,在实际的软件开发过程中,很多都是面向接口的开发方式,这种是一种面向对象开发的模式.但是,今天笔者给大家带来的是面向插件的 ...

  3. Python中将函数作为另一个函数的参数传入并调用

    在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用 在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除, ...

  4. OpenCV探索之路(四):膨胀、腐蚀、开闭运算

    腐蚀和膨胀是最基本的形态学运算. 腐蚀和膨胀是针对白色部分(高亮部分)而言的. 膨胀就是对图像高亮部分进行"领域扩张",效果图拥有比原图更大的高亮区域:腐蚀是原图中的高亮区域被蚕食 ...

  5. python3之日期和时间

    1.python3日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时 ...

  6. python之list

    1.python列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推 序列都可以进行的操作包括索引,切片,加,乘, ...

  7. Qt5.3.1 OpenCV2.4.9 开发环境配置

    首先是将我们需要的三个软件安装:分别是OpenCV2.4.9.QT5.3.1 .Cmake3.0.2 一定要使用Cmake3.0.2编译OpenCV2.4.9 其他版本的不一定能编译成功!!!! A. ...

  8. JavaScript基础知识(对象、函数与对象)

    17.对象 属性:描述对象的信息  方法:描述对象的行为  封装:只关心输入和输出(不管过程如何实现) ü 对象的分类: 内置对象(原生对象): 就是JavaScript语言预定义的对象(如Strin ...

  9. AbstractQueuedSynchronizer的简单分析

    说明:本作者是文章的原创作者,转载请注明出处:本文地址:http://www.cnblogs.com/qm-article/p/7955781.html 一.AbstractQueuedSynchro ...

  10. GNS3的配置

    为了更好的了解协议我决定学习CCNA 安装好GNS3后我们打开 点击设置 先把iso解压,解压完成后倒入 保存结束 然后在输入idlepc get 设备名称 来计算idepc的值 idepc能让我们p ...