资讯详情

ng-zorro-antd Pagination 简单分页(Simple Mode)完整指南:nzSimple 用法、源码原理与实战验证

📅 2026/9/27 8:30:56 | 华诺云谱 👁 阅读
ng-zorro-antd Pagination 简单分页(Simple Mode)完整指南:nzSimple 用法、源码原理与实战验证
UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载本文基于 ng-zorro-antd 仓库中的 Pagination 组件演示文档 simple.md 与配套源码系统讲解简单分页Simple Mode的使用方式、底层实现原理与测试行为。读完本文你将掌握nzSimple的完整用法、简单分页与默认分页的内部切换机制、页码跳转的边界处理逻辑以及如何在真实业务中正确选用两种模式。一、简单分页是什么从官方演示说起在 Pagination 官方文档 中分页器被定义为用于分隔长列表每次只加载一个页面的导航组件。当加载/渲染所有数据耗时较长、或用户需要频繁切换页码浏览数据时分页器是标准方案。而简单分页Simple mode是其中一种精简形态只保留上一页、下一页两个按钮以及一个可直接输入页码的跳转框不渲染完整页码序列。官方演示文档 simple.md 的描述非常简洁——简单的翻页Simple mode.对应的演示组件代码在 simple.tsimport { Component } from angular/core; import { NzPaginationModule } from ng-zorro-antd/pagination; Component({ selector: nz-demo-pagination-simple, imports: [NzPaginationModule], template: nz-pagination [nzPageIndex]2 [nzTotal]50 nzSimple / }) export class NzDemoPaginationSimpleComponent {}只需在nz-pagination上添加nzSimple属性等价于[nzSimple]true并绑定nzPageIndex当前第 2 页与nzTotal共 50 条数据即得到一个最小可用的简单分页器。二、nzSimple 的 API 定位与完整参数表在 index.zh-CN.md 的nz-paginationAPI 表中nzSimple被定义为参数说明类型默认值全局配置[nzSimple]当添加该属性时显示为简单分页boolean-✅关键点nzSimple声明为boolean类型默认值未显式给出源码中为false它支持全局配置WithConfig可以通过NzConfigService或provideNzConfigs在应用级别统一开启除此之外简单分页模式下仍然生效的输入项包括nzTotal数据总数、nzPageIndex当前页可双向绑定、nzPageSize每页条数默认10、nzDisabled禁用、nzItemRender自定义页码结构以及输出事件(nzPageIndexChange)。以下为nz-pagination的完整 API 表简单模式与默认模式共用来自官方文档参数说明类型默认值全局配置版本[nzTotal]数据总数number--[nzPageIndex]当前页数可双向绑定number1-[nzPageSize]每页条数可双向绑定number10-[nzDisabled]是否禁用booleanfalse-[nzShowQuickJumper]是否可以快速跳转至某页booleanfalse✅[nzShowSizeChanger]是否可以改变nzPageSizebooleanfalse✅[nzSimple]当添加该属性时显示为简单分页boolean-✅[nzSize]当为small时是小尺寸分页small \| defaultdefault✅[nzResponsive]当nzSize未指定时根据屏幕宽度自动调整尺寸booleanfalse-[nzPageSizeOptions]指定每页可以显示多少条number[][10, 20, 30, 40]✅[nzItemRender]用于自定义页码的结构TemplateRef{ $implicit: page \| prev \| next \| prev_5 \| next_5, page: number }--[nzShowTotal]用于显示数据总量和当前数据范围TemplateRef{ $implicit: number, range: [number, number] }--[nzHideOnSinglePage]只有一页时是否隐藏分页器booleanfalse-[nzAlign]对齐方式NzPaginationAlignstart-20.4.0(nzPageIndexChange)页码改变的回调EventEmitternumber--(nzPageSizeChange)每页条数改变的回调EventEmitternumber--需要注意nzShowQuickJumper、nzShowSizeChanger、nzShowTotal、nzPageSizeOptions等参数是默认模式完整页码序列的配置在简单模式下并不渲染简单模式无页码序列与尺寸切换器这一点从简单模式的组件模板中可以清楚看到。三、源码级解析NzPaginationSimpleComponent 的实现简单分页由独立组件 pagination-simple.component.ts 实现其选择器为nz-pagination-simple模板结构如下ul li nz-pagination-item typeprev [disabled]isFirstIndex .../li li classant-pagination-simple-pager [attr.title]pageIndex / lastIndex input [disabled]disabled [value]pageIndex (keydown.enter)jumpToPageViaInput($event) size3 / span classant-pagination-slash//span {{ lastIndex }} /li li nz-pagination-item typenext [disabled]isLastIndex .../li /ul三个核心部分的职责上一页 / 下一页按钮复用li[nz-pagination-item]组件见 pagination-item.component.ts传入typeprev/typenext。按钮的禁用状态由isFirstIndex当前在第一页与isLastIndex当前在最后一页控制——到达边界时对应按钮自动禁用而不是产生无效跳转。页码输入框input size3展示当前页码用户输入新页码后按下Enter 键触发jumpToPageViaInput($event)。输入框右侧以斜杠/分隔显示总页数lastIndex整体呈现当前页 / 总页数的经典简洁形态。父容器属性宿主元素上绑定[class.ant-pagination-rtl]在 RTL 方向阿拉伯语等从右向左的界面下自动切换布局。关键方法逐一看jumpToPageViaInput($event)读取输入框值通过toNumber来自 core/util转成数字toNumber(target.value, this.pageIndex)的第二个参数是兜底值——输入非数字时回退到当前页码随后调用onPageIndexChange(index)发出变更并把输入框重置为this.pageIndex即实际生效的页码。prePage()/nextPage()分别发出pageIndex - 1/pageIndex 1。updateBindingValue()计算lastIndex maxPage || 1其中maxPage Math.ceil(total / pageSize)并推导isFirstIndex、isLastIndex两个边界标志在ngOnChanges中只要pageIndex、total、pageSize任一变化就重算。构造函数中有一段特殊逻辑通过Renderer2把组件自身的宿主元素从 DOM 中移除因为该组件仅作为模板提供者存在实际渲染由其父组件通过ngTemplateOutlet完成。四、父组件如何调度两种模式主组件 pagination.component.ts选择器nz-pagination内部同时嵌入了nz-pagination-simple与nz-pagination-default两个子组件模板通过if (nzSimple)决定渲染哪一份if (showPagination) { if (nzSimple) { ng-template [ngTemplateOutlet]simplePagination.template / } else { ng-template [ngTemplateOutlet]defaultPagination.template / } }即两种模式的模板始终实例化但只有其一被输出。父组件把nzTotal、nzPageIndex、nzPageSize、nzDisabled、nzItemRender等输入统一透传给两个子组件并把pageIndexChange事件统一收敛到自己的onPageIndexChangeonPageIndexChange(index: number): void { const lastIndex this.getLastIndex(this.nzTotal, this.nzPageSize); const validIndex this.validatePageIndex(index, lastIndex); if (validIndex ! this.nzPageIndex !this.nzDisabled) { this.nzPageIndex validIndex; this.nzPageIndexChange.emit(this.nzPageIndex); } }这里体现了简单模式最重要的边界保护用户输入超出范围的页码如 100会被validatePageIndex钳制到lastIndex最后一页或1第一页且仅在页码真正变化、组件未禁用时才发出nzPageIndexChange事件。getLastIndex使用Math.ceil(total / pageSize)计算总页数并做pageSize 0的防除零处理。此外父组件还负责通过NzI18nService订阅语言变化加载Pagination的国际化文案按钮的prev_page、next_page等 title 提示nzResponsive开启时订阅NzBreakpointService的断点在xs屏超小屏自动切换为small尺寸nzHideOnSinglePage与总数为 0 时隐藏整个分页器showPagination计算。五、测试用例验证的行为契约简单模式的行为在 pagination.spec.ts 中有完整覆盖可作为功能契约参考样式类正确性simple mode测试组断言根元素包含ant-pagination-simple类且ul的第一个子元素是ant-pagination-prev上一页按钮、最后一个子元素是ant-pagination-next下一页按钮页码跳转向输入框写入5并派发 Enter 键事件后nzPageIndexChange恰好触发一次输入框值变为5nzPageIndex更新为 5再次 Enter 不重复触发页码未变化越界钳制输入100超出总页数后 Enter页码仍保持5事件不触发——对应validatePageIndex的钳制逻辑边界场景total 0时整个分页器不渲染任何内容pageSize 0时不会崩溃页码项仍然渲染。这些测试同时说明了简单模式的两个实用细节输入框只有按 Enter 才生效以及超范围输入会被安全忽略。六、样式实现与视觉形态简单分页的视觉样式定义在 style/index.less 中核心规则集中在-simple -simple-pager一段包括.ant-pagination-simple下页码序列.ant-pagination-item默认隐藏.ant-pagination-simple-pager使用display: inline-flex对齐输入框与总页数文本并限制输入框宽度width: 100%、height: 100%、margin-right: 8px等斜杠分隔符使用.ant-pagination-slash类-mini小尺寸变体下有独立的紧凑样式适配。从源码结构可以推断简单分页的简洁主要体现在省去完整页码渲染默认模式需要按窗口计算并渲染一串页码含省略号prev_5/next_5跳页而简单模式只需要 2 个按钮 1 个输入框DOM 与样式开销更小适合对空间敏感或页码很多的场景。七、简单模式 vs 默认模式如何选择维度简单模式nzSimple默认模式默认视觉形态上一页 输入框 下一页完整页码序列 可选快速跳转/尺寸切换页码定位通过输入框键入页码 Enter 跳转直接点击页码或快速跳转输入框适用数据量总页数很多、无需逐个展示页码常规列表分页页数适中可选配置nzItemRender、nzDisabled等基础项nzShowQuickJumper、nzShowSizeChanger、nzShowTotal等全部可用边界行为输入越界自动钳制、Enter 才生效点击越界页同样被钳制从仓库现有 demodemo 目录下的basic、mini、more、jump等演示可以看出默认模式承载了大多数常规分页场景简单模式更适合页数较多、希望节省横向空间的极简需求——例如移动端底部导航、嵌入在紧凑卡片中的列表翻页。八、实战要点小结最小用法nz-pagination [nzPageIndex]2 [nzTotal]50 nzSimple /nzTotal必须提供nzPageIndex可双向绑定[(nzPageIndex)]全局开启nzSimple支持全局配置可在NzConfigService中统一设置避免每个页面重复声明跳转交互简单模式的页码输入框按 Enter 提交输入非数字回退当前页越界值被钳制到边界页边界体验首页/末页时对应按钮自动禁用isFirstIndex/isLastIndex响应式配合可叠加nzResponsive在窄屏自动缩小尺寸或直接使用nzSizesmall禁用态nzDisabled同时作用于按钮与输入框输入框[disabled]disabled切换为禁用后不响应任何页码变更。通过本文对 simple.md 演示文档、pagination-simple.component.ts 实现与 pagination.spec.ts 测试的对照分析你可以放心地在项目中按需启用nzSimple并准确预判它的交互与边界行为。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐SymPy 张量索引方法Indexed 表达式完全解析get_indices 与 get_contraction_structure 实战指南SymPy 张量索引方法Indexed 表达式完全解析get_indices 与 get_contraction_structure 实战指南 sympyUI组件前端Ant Design Pagination 简单模式Simple Mode使用指南从 demo 到源码原理Ant Design Pagination 简单模式Simple Mode使用指南从 demo 到源码原理 Ant Design 的 Pagination前端UI组件设计系统ng-zorro-antd Pagination 基础用法从 nz-pagination 快速上手到源码级实现解析ng zorro antd Pagination 基础用法从 nz pagination 快速上手到源码级实现解析 分页器Pagination是长列表数UI组件前端上一篇PowerSploit参数设计Mandatory与Position属性配置下一篇ReHLDS完整安装指南从零开始搭建专业级CS1.6/CZ服务器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑