ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

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),仅供参考
返回列表