新闻详情

新闻详情

首页 / 资讯中心 / 详情

ng-zorro-antd Spin 加载组件基本用法详解:从 nz-spin 简单模式到源码实现

发布时间:2026/9/28 12:50:38来源:尧图网络
ng-zorro-antd Spin 加载组件基本用法详解:从 nz-spin 简单模式到源码实现
UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载本文面向使用 ng-zorro-antdAngular UI 组件库的开发者以官方 Spin 组件“基本用法”演示为基础完整讲解nz-spin组件的核心 API、简单模式nzSimple的正确打开方式并结合仓库源码spin.component.ts与官方文档index.en-US.md剖析其加载状态的底层实现。读完本文你将能快速在页面或区块中接入可靠的 loading 反馈并掌握延迟防抖、自定义指示符、嵌套遮罩等进阶能力。Spin 组件是什么Spin 是 ng-zorro-antd 中用于展示页面或区块正在加载状态的反馈组件。当页面局部等待异步数据、或处于渲染过程中时一个恰当的加载动画能有效缓解用户的等待焦虑——这是官方文档components/spin/doc/index.en-US.md给出的组件适用场景。它隶属于 Feedback 反馈类组件完整源码位于 components/spin对外通过NzSpinModule暴露使用。基本用法一个简单的 loading 状态官方基本用法演示basic.md的主题只有一句话一个简单的 loading 状态。对应的演示组件basic.ts展示了最简单的写法import { Component } from angular/core; import { NzSpinModule } from ng-zorro-antd/spin; Component({ selector: nz-demo-spin-basic, imports: [NzSpinModule], template: nz-spin nzSimple / }) export class NzDemoSpinBasicComponent {}这段代码有三个要点模块导入从ng-zorro-antd/spin导入NzSpinModule并在组件imports数组中注册当前仓库基于 Angular 独立组件standalone模式编写不再需要在NgModule中声明组件标记模板中使用nz-spin标签nzSimple属性这是本演示的核心开关声明该 Spin 不包裹任何子内容children即只渲染一个独立的加载动画本身。也就是说nz-spin nzSimple组合是最简单 loading 状态的标准写法——无需任何容器内容开箱即出一个旋转动画。nz-spin 核心 API 一览根据官方 API 文档components/spin/doc/index.en-US.mdnz-spin组件共提供 6 个输入属性基本用法中仅用到其中一个属性说明类型默认值支持全局配置[nzDelay]延迟显示 loading 状态的时间毫秒用于防止闪烁number-[nzIndicator]自定义加载指示符TemplateRefvoid-✅[nzSize]Spin 尺寸large \| small \| defaultdefault[nzSpinning]是否处于加载状态booleantrue[nzSimple]是否无子内容childrenbooleanfalse[nzTip]有子内容时自定义描述文案string-其中[nzIndicator]标注了Global Config支持即可以通过NzConfigService在全局统一配置默认指示符对应的配置模块名为spin源码见 spin.component.ts 中的NZ_CONFIG_MODULE_NAME常量并通过WithConfig()装饰器接入全局配置体系。从源码看基本用法的实现原理光会写标签还不够理解nz-spin nzSimple /背后发生了什么能帮助你在排错和定制时更加从容。查看组件核心实现spin.component.ts默认指示符当未传入nzIndicator时组件内置一个由 4 个圆点组成的默认旋转动画模板源码 L37-L44ng-template #defaultTemplate span classant-spin-dot ant-spin-dot-spin i classant-spin-dot-item/i i classant-spin-dot-item/i i classant-spin-dot-item/i i classant-spin-dot-item/i /span /ng-template样式由 style/index.less 提供基础视觉样式如圆点、旋转动画、ant-spin类则来自 ant-design 风格体系。模板分支逻辑源码 L45-L65当isLoading()为真时渲染带ant-spin ant-spin-spinning类的加载容器若同时传入nzTip再渲染ant-spin-text文案当!nzSimple即非简单模式时额外渲染ant-spin-container包裹ng-content并在加载时为其追加ant-spin-blur类实现内容模糊遮罩效果。主机类绑定源码 L67-L69非简单模式下组件根元素自动带上ant-spin-nested-loading类标识这是嵌套加载结构。属性输入归一化源码 L79-L84nzSpinning与nzSimple使用booleanAttribute转换nzDelay使用numberAttribute转换。这意味着即使你在模板中写nzSimple无值、nzSpinningtrue或[nzDelay]500Angular 都能正确解析为对应类型的值。加载状态信号源码 L88组件内部用signal(false)的isLoading驱动渲染默认不加载真正的加载状态由nzSpinning经nzDelay防抖管线BehaviorSubjectswitchMap源码 L85-L121处理后写入该信号。从基本用法延伸常见场景实战官方在demo目录下围绕同一组件提供了 6 个演示components/spin/demo按主题覆盖了从基本用法延伸出的常见实战场景。以下逐一对照源码展开。尺寸控制nzSize尺寸演示 通过nzSize在small | default | large三档间切换并为每个nz-spin设置了display: inline-block以便横向排列template: nz-spin nzSimple nzSizesmall / nz-spin nzSimple / nz-spin nzSimple nzSizelarge / 组件在模板中通过[class.ant-spin-lg]、[class.ant-spin-sm]响应式地切换尺寸类见 spin.component.ts具体大小由 less 样式定义。容器内居中展示inside 演示 展示了把独立 Spin 放进自定义容器并居中显示的典型布局template: div classcontainer nz-spin nzSimple / /div , styles: .container { text-align: center; background: rgba(0, 0, 0, 0.05); border-radius: 4px; padding: 30px 50px; margin: 20px 0; } 包裹内容嵌套模式与模糊遮罩nested 演示 展示了最常见的区块加载用法——用nz-spin包裹任意内容并用[nzSpinning]双向联动一个nz-switch控制加载状态template: nz-spin [nzSpinning]isSpinning() nz-alert nzTypeinfo nzMessageAlert message title nzDescriptionFurther details about the context of this alert. / /nz-spin br / div Loading state: nz-switch [(ngModel)]isSpinning / /div 注意此处组件内部用信号signal(false)管理状态readonly isSpinning signal(false)。加载时被包裹内容会附加ant-spin-blur类产生模糊效果加载指示符则浮于内容之上——这正是前文源码中!nzSimple分支的职责。自定义提示文案nzTiptip 演示 在嵌套模式下通过nzTip补充文字说明template: nz-spin nzTipLoading... nz-alert nzTypeinfo nzMessageAlert message title nzDescriptionFurther details about the context of this alert. / /nz-spin 从源码看nzTip非空时模板会渲染ant-spin-text文案节点并给加载容器追加ant-spin-show-text类见 spin.component.ts。自定义指示符nzIndicatorcustom-indicator 演示 用ng-template定义自定义指示符配合nz-icon的 loading 图标实现更契合业务风格的加载动画import { NzIconModule } from ng-zorro-antd/icon; import { NzSpinModule } from ng-zorro-antd/spin; template: ng-template #indicatorTemplatenz-icon nzTypeloading //ng-template nz-spin nzSimple [nzIndicator]indicatorTemplate / , styles: nz-icon { font-size: 24px; } 实现上组件通过[ngTemplateOutlet]nzIndicator || defaultTemplate渲染传入的模板spin.component.tsnzIndicator为空时自动回退到内置四圆点动画。因为nzIndicator支持全局配置API 表中标注 ✅团队可以统一替换全站加载样式。延迟显示防闪烁nzDelaydelay-and-debounce 演示 解决了一个真实痛点——短促的异步请求会让 loading 动画闪一下体验很差。官方给出的方案是设置[nzDelay]500并明确说明语义当 spinning 状态在nzDelay毫秒内结束时loading 状态不会显示见 delay-and-debounce.md。template: nz-spin [nzSpinning]isSpinning() [nzDelay]500 nz-alert nzTypeinfo nzMessageAlert message title nzDescriptionFurther details about the context of this alert. / /nz-spin br / div Loading state: nz-switch [(ngModel)]isSpinning / /div 这一防抖逻辑在源码中有清晰实现spin.component.tsngOnInit中构建了delay$与spinning$的管道nzDelay变化触发distinctUntilChanged去重switchMap根据延迟值选择直接透传还是定时器延时输出nzSpinning/nzDelay的每次变更由ngOnChanges推入对应流源码 L123-L131。源码注释还说明作者刻意用switchMapsetTimeout手写防抖而非debounce(() timer())是为了避免消费者并未使用这些 RxJS 函数时仍被打包进主包从而减小体积——这是一个值得借鉴的依赖瘦身思路。快速上手指南要在自己的 Angular 项目中复现本文所有用法步骤如下安装依赖确保项目中已引入ng-zorro-antd导入模块在使用处导入NzSpinModule来自ng-zorro-antd/spin若需自定义指示符示例中的图标还需导入NzIconModule来自ng-zorro-antd/icon并在全局注册所需图标参考 icon 组件 的provideIcons方案编写模板按上文各演示片段组合nz-simple、nzSize、nzTip、nzSpinning、nzDelay、nzIndicator六个属性运行验证基本用法下一个nz-spin nzSimple /应立即渲染出默认的四圆点旋转动画。组件对外导出的公共 API 集中在 public-api.ts即NzSpinComponent与NzSpinModule配合 spin.spec.ts 中的单元测试可以进一步确认各属性的预期行为。总结nz-spin基本用法演示虽然只有一行模板却代表了该组件最纯粹的形态不包裹内容、不附加文案仅输出一个 loading 动画。在此基础上nzSize控制尺寸、nzTip与嵌套模式提供内容遮罩反馈、nzIndicator支持全局级自定义、nzDelay解决短请求闪烁——六个属性各司其职配合源码中清晰的信号驱动与防抖管线足以覆盖从一行代码的简单状态到复杂区块加载的全部常见诉求。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐Semi Design Spin 加载器组件详解从基础用法到源码级实现Semi Design Spin 加载器组件详解从基础用法到源码级实现 Spin 加载器是 Semi Design 反馈类组件中的核心成员用于告知用户「内容前端UI组件设计系统ng-zorro-antd Spin 组件尺寸详解small / default / large 三种加载态的选型与实践ng zorro antd Spin 组件尺寸详解small / default / large 三种加载态的选型与实践 Spin加载中是 ng zorrUI组件前端ng-zorro-antd ColorPicker 基本用法从 nz-color-picker / 一行模板到源码级的实现解析ng zorro antd ColorPicker 基本用法从 nz color picker / 一行模板到源码级的实现解析 ng zorro antdUI组件前端上一篇Pixeltovoxelprojector完整指南从像素运动到3D体素投影的终极教程下一篇FUXA项目中的授权功能配置与安全设置解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

列族系列 · 第 07 篇——调优实战:内存、压缩与监控 2026/9/29 9:41:16

列族系列 · 第 07 篇——调优实战:内存、压缩与监控

把列族集群的性能与稳定性调到最佳 目 录 一、导读 二、JVM 与内存调优 2.1 Cassandra 堆内存 2.2 HBase RegionServer 内存划分 2.3 原则 三、写入与压缩调优 3.1 批量写入 3.2 压缩(Compaction) 3.3 合理利用 TTL 四、压测与监控体系 4.1 压测&#x…

阅读更多 →
传感器端计算:突破边缘AI数据搬运功耗困境的关键技术 2026/9/29 9:41:16

传感器端计算:突破边缘AI数据搬运功耗困境的关键技术

先说一个我自己踩过的坑:前年做一个工业视觉检测方案,产品经理拍板用的是“普通摄像头边缘盒子”的老套路。等一测功耗,整套系统最高到12W,客户要求压到5W以内,怎么都下不来。后面仔细分析才发现,真正吃掉功…

阅读更多 →
systrace 卡顿排查实战:从时间线到根因定位 2026/9/29 9:41:16

systrace 卡顿排查实战:从时间线到根因定位

排查卡顿问题的时候,光靠肉眼看界面抖动、再凭感觉在代码里加日志,效率其实非常低。我第一次用 Android 性能分析工具 systrace 解决线上问题,最大的感受是它把“卡一下”从一种模糊的体感,变成了一条带精确时间戳的事件时间轴——…

阅读更多 →
GNSS电离层延迟估计全解析:从物理机制到RTKLIB工程实践 2026/9/29 9:41:09

GNSS电离层延迟估计全解析:从物理机制到RTKLIB工程实践

做GNSS定位的朋友应该都遇到过这种情况:明明是晴天、卫星数也足够,固定解却突然“飘”出去几米,或者单点定位精度肉眼可见地变差。如果恰好又赶上太阳活动活跃的年份,这种情况会更频繁,甚至连续几天都没法达到厘米级。…

阅读更多 →
VMware安装Ubuntu 16.04实战指南:遗留系统开发与维护 2026/9/29 9:41:09

VMware安装Ubuntu 16.04实战指南:遗留系统开发与维护

1. 为什么现在还要折腾 Ubuntu 16.04?——不是怀旧,是刚需VMware 安装 Ubuntu 16.04 这个组合,乍看像在翻老黄历。毕竟 Ubuntu 22.04 LTS 都已发布两年多,24.04 也刚落地,连 Canonical 官方对 16.04 的标准支持早在 20…

阅读更多 →
U-Image头部结构详解:64字节启动宪法与嵌入式启动故障排查 2026/9/29 9:41:09

U-Image头部结构详解:64字节启动宪法与嵌入式启动故障排查

1. 什么是U-Image?为什么它的头部信息值得深挖?在嵌入式Linux开发一线干了十多年,从ARM9到RK3568、从i.MX6到全志H616,我几乎每天都在和U-Image打交道——它不是个文件名,而是一套被U-Boot严格定义的二进制镜像封装格式…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉