ARTICLE DETAIL

资讯详情

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

ng-zorro-antd Slider 自定义提示:`nzTipFormatter` 格式化与隐藏 Tooltip 完整指南

ng-zorro-antd Slider 自定义提示:`nzTipFormatter` 格式化与隐藏 Tooltip 完整指南 UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载nzTipFormatter是 ng-zorro-antd Slider滑动输入条组件中用于定制滑块 Tooltip 内容的输入属性。本文基于 tip-formatter 演示 与 Slider 官方 API 文档结合 slider.component.ts 与 handle.component.ts 的底层实现系统讲解如何用函数格式化提示文本、用null彻底隐藏提示、用TemplateRef渲染自定义模板并厘清它与nzTooltipVisible、nzTooltipPlacement的配合关系。读完本文你将掌握 Slider Tooltip 三种形态格式化函数、隐藏、自定义模板的完整写法并能理解其内部传递与渲染原理从而在自己的 Angular 项目中直接落地使用。一、认识nzTipFormatterSlider 提示内容的唯一入口ng-zorro-antd 的 Slider 在拖动滑块时会在手柄handle上方弹出 Tooltip 展示当前值。默认情况下它直接显示数值本身而nzTipFormatter就是用来接管这段提示内容的开关传入格式化函数时Slider 会把当前值传给该函数Tooltip 显示函数的返回值传入null时Tooltip 被彻底隐藏传入TemplateRef时可以用 Angular 模板自定义整个提示结构。官方 API 文档对该属性的定义如下见 doc/index.zh-CN.md参数说明类型默认值[nzTipFormatter]Slider 会把当前值传给nzTipFormatter并在 Tooltip 中显示nzTipFormatter的返回值若为 null则隐藏 Tooltip。(value: number) string \| TemplateRefvoid-从源码角度该属性在 slider.component.ts 中声明的完整类型为Input() nzTipFormatter?: null | ((value: number) string) | TemplateRefvoid;即它支持三种取值null、(value: number) string函数、TemplateRefvoid模板引用且为可选属性不传时回退到默认的原始数值展示。二、核心用法一函数格式化 Tooltip 内容最常见的需求是把 Tooltip 里的纯数字变成带单位的文本例如显示为百分比。官方 tip-formatter 演示 提供了完整的可运行示例import { Component } from angular/core; import { NzSliderModule } from ng-zorro-antd/slider; Component({ selector: nz-demo-slider-tip-formatter, imports: [NzSliderModule], template: nz-slider [nzTipFormatter]formatter / nz-slider [nzTipFormatter]null / nz-slider [nzTipFormatter]titleTemplate / ng-template #titleTemplate let-value spanSlider value: {{ value }}/span /ng-template }) export class NzDemoSliderTipFormatterComponent { formatter(value: number): string { return ${value}%; } }第一个nz-slider [nzTipFormatter]formatter /展示的就是函数格式化formatter接收当前滑块的数值返回${value}%。例如滑块拖到 50Tooltip 显示为50%。函数签名为(value: number) string值在滑块每次变动包括键盘方向键微调、鼠标/触摸拖动时都会重新传入并刷新提示内容。你可以在函数中做任意字符串加工比如拼接单位、换算显示口径、按区间映射文案等formatter(value: number): string { if (value 0) { return 起点; } return ${value} 元; }三、核心用法二设置null隐藏 Tooltip演示中的第二个滑块nz-slider [nzTipFormatter]null /展示了如何关闭提示将nzTipFormatter显式绑定为nullTooltip 即不会出现。其底层逻辑在 handle.component.ts 的模板绑定中div #handle classant-slider-handle tabindex0 nz-tooltip [style]style [nzTooltipTitle]tooltipFormatter null || tooltipVisible never ? null : tooltipTitle [nzTooltipTitleContext]{ $implicit: value } [nzTooltipTrigger]null [nzTooltipPlacement]tooltipPlacement /div可以看到当tooltipFormatter null时nzTooltipTitle被置为nullTooltip 内容为空即不渲染。这条判断同时涵盖nzTooltipVisible never的情况——即显式关闭提示与“任何情况下都不显示”的配置在 handle 层殊途同归。四、核心用法三用TemplateRef渲染自定义模板如果字符串拼接无法满足需求nzTipFormatter还支持传入TemplateRef用 Angular 模板自定义整个提示气泡的内容。演示中第三个滑块的做法是nz-slider [nzTipFormatter]titleTemplate / ng-template #titleTemplate let-value spanSlider value: {{ value }}/span /ng-template模板中通过let-value声明局部变量来接收当前滑块值渲染结果类似Slider value: 50。这里的关键是模板上下文的注入方式。回到 handle 组件模板handle.component.ts[nzTooltipTitleContext]{ $implicit: value }Slider 会把当前值作为$implicit隐式变量注入模板上下文因此模板里用let-value解构即可拿到当前值。这意味你可以在模板中自由组织 HTML 结构、图标、多行内容等ng-template #titleTemplate let-value div classtip-box strong当前值/strong span{{ value }}/span /div /ng-template需要说明的是模板模式仍遵循与函数模式相同的刷新机制滑块值变化时 handle 会同步更新 Tooltip 的标题与位置详见下文源码分析。五、源码级原理Tooltip 标题的生成链路nzTipFormatter的生效路径是nz-slider组件接收该输入后透传给内部的nz-slider-handle组件再落入 Tooltip 的标题生成逻辑。5.1 Slider 主组件的透传在 slider.component.ts 中主组件把手柄列表中的每个 handle 都绑定了 formatter 与显隐配置nz-slider-handle [offset]handle.offset! [value]handle.value! [active]handle.active [tooltipFormatter]nzTipFormatter [tooltipVisible]nzTooltipVisible [tooltipPlacement]nzTooltipPlacement [dragging]dragging() /也就是说nzTipFormatter与nzTooltipVisible、nzTooltipPlacement一样会作用于每一个滑块手柄。对于nzRange双滑块模式两个手柄的提示内容都会走同一套 formatter。5.2 Handle 组件的标题计算handle 组件中负责生成提示文本的方法是updateTooltipTitlehandle.component.tsprivate updateTooltipTitle(): void { if (this.tooltipFormatter) { this.tooltipTitle typeof this.tooltipFormatter function ? this.tooltipFormatter(this.value!) : this.tooltipFormatter; } else { this.tooltipTitle ${this.value}; } }逻辑非常直观若tooltipFormatter存在且为函数则以当前value为参数调用之用返回值作为标题函数模式若为TemplateRef则直接把模板引用作为标题模板模式配合$implicit上下文渲染若为空值未设置回退为字符串形式的原始数值即默认行为。该方法在 handle 的ngOnChanges中由value变化触发handle.component.ts同时会调用updateTooltipPosition()重新定位气泡保证数值变化时提示既更新内容又保持贴附在手柄上。5.3 显隐与交互细节悬停/拖动显隐handle 的enterHandle/leaveHandlehandle.component.ts控制 Tooltip 的 show/hide拖动过程中dragging为真悬停逻辑被跳过改为在onDragStart时通过showHandleTooltip激活对应手柄的提示slider.component.ts。键盘微调聚焦手柄后按方向键onKeyDown见 slider.component.ts会按nzStep步进更新值handle 的value变化同样触发标题刷新因此键盘操作下格式化提示同样实时生效。与nzTooltipVisible的优先级handle 的模板绑定中tooltipFormatter null || tooltipVisible never任一成立即不显示内容而nzTooltipVisible always时会在值变化后强制展示handle.component.ts。也就是说“格式化内容”与“是否显示”由nzTipFormatter与nzTooltipVisible两个维度共同决定可组合使用。六、与相邻属性的组合使用建议nzTipFormatter通常和以下属性搭配完整 API 见 Slider 官方文档属性说明类型默认值[nzTooltipVisible]值为always时总是显示值为never时任何情况都不显示default \| always \| neverdefault[nzTooltipPlacement]设置 Tooltip 的默认位置string-组合场景示例!-- 总是显示且带单位格式化 -- nz-slider [nzTooltipVisible]always [nzTipFormatter]formatter / !-- 仅在悬停时显示自定义模板 -- nz-slider [nzTipFormatter]titleTemplate ng-template #titleTemplate let-value span当前值{{ value }}/span /ng-template /nz-slider !-- 彻底关闭提示两者等价 -- nz-slider [nzTipFormatter]null / nz-slider [nzTooltipVisible]never /需要留意的是nzTooltipPlacement默认值在源码中为topslider.component.tsAPI 表格中留空表示沿用默认位置垂直滑块等场景可按需调整。七、小结与验证入口nzTipFormatter是 Slider Tooltip 定制的核心开关三种取值对应三种能力函数格式化文本、null隐藏提示、TemplateRef自定义模板结构。其实现链路清晰——主组件透传、handle 组件在值变化时刷新标题与位置并与nzTooltipVisible/nzTooltipPlacement协同工作。如果你想进一步验证行为或查看测试覆盖可关注以下仓库位置完整可运行示例tip-formatter.ts 与对应文档 tip-formatter.md属性声明与透传slider.component.ts、slider.component.ts标题生成与显隐逻辑handle.component.ts、handle.component.ts模板模式测试用例slider.spec.ts官方 API 说明doc/index.zh-CN.md在项目中使用时引入NzSliderModule后即可在nz-slider上直接使用上述写法无需额外配置。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐ng-zorro-antd Progress 组件自定义文字格式nzFormat完全指南ng zorro antd Progress 组件自定义文字格式nzFormat完全指南 nzFormat 是 ng zorro antd 中 nz proUI组件前端Ant Design Slider tooltip.formatter 完全指南自定义提示内容与隐藏 Tooltip 的底层原理Ant Design Slider tooltip.formatter 完全指南自定义提示内容与隐藏 Tooltip 的底层原理 导读 本文围绕 antd S前端UI组件设计系统ng-zorro-antd Notification 通知提醒框自定义样式nzStyle 与 nzClass 完全指南ng zorro antd Notification 通知提醒框自定义样式nzStyle 与 nzClass 完全指南 本篇技术指南围绕 ng zorro aUI组件前端上一篇PinchTab 隐身评分实战browserscan Bot Detection 反爬检测页面的自动化采集指南下一篇Salt PlayerAndroid设备上最佳的本地音乐播放器体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表