后端返回列表是全部数据,分页前端做的,自定义分页组件实现前端分页,下图为分页效果:

1.创建page.component.html

<nav class="navigation"><ul class="pagination"><li [hidden]="pageTotal<11" class="page-item" (click)="goPage(1)"><a class="page-link" href="javascript:void(0);">首页</a></li><li class="page-item"><button type="button" class="page-link" aria-label="Previous" [disabled]="pageNumber===1" (click)="goPage(pageNumber-1)"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></button></li><li *ngFor = "let item of page(); let i = index" class="page-item" [ngClass]="{'active':pageNumber == item}" (click)="goPage(item)"><a class="page-link" href="javascript:void(0);">{{item==0?'...':item}}</a></li><li class="page-item"><button type="button" class="page-link" aria-label="Next" [disabled]="pageNumber===pageTotal" (click)="goPage(pageNumber+1)"><span aria-hidden="true">&raquo;</span><span class="sr-only">Next</span></button></li><li  [hidden]="pageTotal<11" class="page-item" (click)="goPage(pageTotal)"><a class="page-link" href="javascript:void(0);">尾页</a></li><li class="defined-page-size" [hidden]="isHiddenItemCount">每页显示<input class="text-center" type="number" [value]="pageItemCount" min="1" [max]="[pageData.length]" (input)="pageItemChange($event)">条</li><li class="page-item" (click)="setPageItem()" [hidden]="isHiddenItemCount"><button class="page-link">确定</button></li></ul>
</nav>

2.创建page.component.ts

import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';@Component({selector: 'app-page',templateUrl: './page.component.html',styleUrls: ["./page.component.css"]
})export class PageComponent implements OnInit {@Input() pageData: any[] = [];//分页的列表数据@Input() pageItemCount: number = 15;//每页显示的个数,默认15,可自定义@Input() pageNumber : number = 1;//页码@Input() isHiddenItemCount:boolean;//是否显示自定义页数@Output() onChangePage: EventEmitter<Number> = new EventEmitter;@Output() onChangePageItemCount : EventEmitter<Number> = new EventEmitter;pageTotal: number = 1;pageSum: number = 10; //navigation total numbercurrentPageItem: number;constructor() {}ngOnInit() {if (this.pageItemCount < 0) {this.pageItemCount = 1;}if (!Array.isArray(this.pageData)) {this.pageData = [];}if(!this.isHiddenItemCount){this.isHiddenItemCount = false;}}page() {//设置分页this.pageTotal = Math.ceil(this.pageData.length / this.pageItemCount);let halfPageSum = Math.floor(this.pageSum >> 1);let pageItems = [];for (let i = 0; i < this.pageTotal; i++) {pageItems[i] = i + 1;}if (this.pageTotal > this.pageSum) {if (this.pageNumber <= halfPageSum) { // LeftpageItems = pageItems.slice(0, this.pageSum);} else if (this.pageNumber > this.pageTotal - halfPageSum) { // RightpageItems = pageItems.slice(this.pageTotal - this.pageSum, this.pageTotal);pageItems[0] = 0;} else { // Middlelet start = this.pageNumber - halfPageSum;pageItems = pageItems.slice(start, start + this.pageSum - 2);pageItems.unshift(0);pageItems.push(0);}}return pageItems;}goPage(pageNumber: number) {//进入某一页if (pageNumber > 0) {this.pageNumber = pageNumber;this.onChangePage.emit(this.pageNumber);}}setPageItem(){//确定this.onChangePageItemCount.emit(this.currentPageItem);}pageItemChange(event){//自定义每页显示数据this.currentPageItem = event.target.value;}
}

3.在列表组件中的使用

html:

<div class="card"
*ngFor="let service of services.slice((pageNumber-1)*pageItemCount,pageItemCount*pageNumber); let
i=index"><div class="card-header" role="tab" id="heading{{i}}"><h5 class="mb-0"><a class="row" routerLink="/web/slt/{{service.serviceId}}"><span class="col-sm-1">#{{i+1+(pageNumber-1)*pageItemCount}}</span><span class="col-sm-3">Service Id: {{service.serviceId}}</span><span class="col-sm-5">{{service.shortServiceName}}</span></a></h5></div></div></div><app-page *ngIf="ssgService.slt.services.length > pageItemCount" [pageItemCount]="pageItemCount"
[pageData]="ssgService.slt.services" [pageNumber]="pageNumber" (onChangePage)="goPage($event)"(onChangePageItemCount)="setPageItem($event)"></app-page>

ts:

import { Component, OnDestroy, OnInit } from "@angular/core";
import { Router, ActivatedRoute } from "@angular/router";export class SLTComponent {pageNumber: number = 1;//默认第一页pageItemCount: number = 15;//每页显示个数,默认15,可自定义constructor(private router: Router,private route: ActivatedRoute) {}ngOnInit(): void {//获取分页参数this.pageNumber = this.route.snapshot.queryParams["pageNumber"]? this.route.snapshot.queryParams["pageNumber"]: 1;this.pageItemCount = this.route.snapshot.queryParams["pageItemCount"]? this.route.snapshot.queryParams["pageItemCount"]: 15;//获取数据列表......}goPage(pageNumber: number) {//进入某一页this.pageNumber = pageNumber;this.router.navigate(["web/slt"], {queryParams: {pageNumber: pageNumber,pageItemCount: this.pageItemCount}}).catch();}setPageItem(pageItemCount: number) {//设置每页显示的个数,查询加载数据this.pageItemCount = pageItemCount;this.pageNumber = 1;this.router.navigate(["web/slt"], {queryParams: { pageNumber: 1, pageItemCount: this.pageItemCount }}).catch();}}

4.css样式就不展示了,欢迎评论交流

Angular 自定义分页组件,自定义每页显示个数相关推荐

  1. Python自定义分页组件

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

  2. mvc jquery ajax分页实例,jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解,mvcpagerajax分页...

    jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解,mvcpagerajax分页 简单的两个步骤即可实现分页功能 //回调里面进行业务处理 function lo ...

  3. vue2自定义分页组件,可设置每页显示数量,指定跳转具体页面

    https://blog.csdn.net/yangwei282367751/article/details/82722840 分页组件 <template>   <div> ...

  4. ASP.NET技巧:GridView控件自定义分页详解第一页

    ASP.NET技巧:GridView控件自定义分页详解 日期:2007年9月11日 作者: 查看:[大字体 中字体 小字体] <script src="../gg/info468.js ...

  5. 自定义JS组件+调用restfui接口显示(SpringBoot)

    先上效果图,可多个显示 , 应用场景:可用于设备稼动率显示(如开机.停机.故障占比多少),中间可写一些文字表达(比如交期紧急情况等等). 1.创建自定义饼图(JS组件) 1 function Bing ...

  6. latex 分页_latex 图片跨页显示问题???

    latex 中一个页面有很多图片,超出一页就显示不出来了:请问怎么让后续图片显示在一个新页面中? 图片显示代码如下每行显示三张: \begin{figure} \centering \includeg ...

  7. Django 分页组件替换自定义分页

    Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """c ...

  8. phpcmsV9 自定义分页函数与调用 - 不影响后台SQL分页

    phpcmsV9 自定义分页函数与调用 - 不影响后台SQL分页 一.前言: 这里主要有二处需要修改: 文件1. www\phpcms\libs\functions\global.func.php 文 ...

  9. ASP.NET 2.0在SQL Server 2005上自定义分页

    这篇文章讲述了如何利用SQL Server 2005的新特性来简单高效的实现分页.对于那些暂时还没用到SQL Server2005的人们,请看在大规模数据中的高效分页方法.如果需要,这篇文章会补上这里 ...

最新文章

  1. Fuel4d 2.3 公布
  2. python中使用 protocol buffer(Protobuf)
  3. 利用tab_control控件在对话框中加入属性页的方法详细介绍
  4. Sublime中增加格式化代码的快捷键
  5. Avalonia跨平台入门第二十三篇之滚动字幕
  6. Dijkstra算法——计算一个点到其他所有点的最短路径的算法
  7. java接口自动化demo_第一个java 接口自动化程序
  8. vue import request from ‘@/xxx/xxx‘,@是什么意思怎样配置
  9. 厦门高职计算机专业,厦门高职,厦门高职学校,厦门高职学校哪个相对好一些 - IT教育频道...
  10. matlab wnetreg,MATLAB神经网络工具箱函数
  11. 利用Xposed+JustTrustMe绕过Android App(途牛apk)的SSL Pinning
  12. mysql 分页 pageindex_根据当前页号(pageIndex)和页大小(pageSize)获取分页数据
  13. div实现页面划分为左,中,右三栏
  14. android 微博sdk 集成 文件不存在(8998) 您所访问的站点在新浪微博的认证失败,错误码 21322
  15. CNCERT发布《2018年我国互联网网络安全态势报告》
  16. python与cad结合_python操作cad
  17. 1小时学会HTML5基础
  18. TP5框架的多图片上传返回不显示问题
  19. Dalvik虚拟机垃圾收集(GC)过程分析
  20. java —— 后台利用监听器统计在线人数

热门文章

  1. static成员函数
  2. 安装版本swf文件转换其他视频格式工具(例:swf to mp4) ,转换后的视频无水印...
  3. 路由器下接路由器设置方法(路由器级联)
  4. 使用Zabbix Agent 2监控MongoDB
  5. Bashtop – Linux的资源监视工具(亲测)
  6. Zabbix系统端口监控状态
  7. Springboot,log文件配置时,logging.file.name与logging.file
  8. 查看、删除本地电脑,连接过的共有文件夹(盘符) 「net use」
  9. Oracle中的函数 之 (wm_concat)
  10. 【Oracle】查询当前SCN