首页/新闻资讯/正文详情

NG-ZORRO ColorPicker 预设颜色(nzPresets)实战指南:分组标签、默认展开与唯一键全解析

发布时间:2026/9/25 8:07:50 来源:云帆数科 栏目:资讯中心
NG-ZORRO ColorPicker 预设颜色(nzPresets)实战指南:分组标签、默认展开与唯一键全解析
UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载nzPresets是 NG-ZORRO ColorPicker颜色选择器组件提供的预设色板能力允许开发者预先为使用者准备好一组或多组常用颜色点击即可快速选中免去在色相盘与滑杆上反复拖拽调色的过程。本指南围绕官方预设颜色示例展开完整讲解NzPresetColor数据结构、单组/多组预设的配置写法、defaultOpen与key的语义并结合仓库源码剖析预设色板的渲染链路与交互原理读完即可在自己的 Angular 表单或设计工具类页面中落地一套可折叠、可复用的快捷取色面板。预设颜色能解决什么问题颜色选择器的默认形态是自由取色用户需要在面板上通过色相渐变、饱和度/明度滑杆以及透明度滑杆来拼出目标颜色操作链路较长对非设计背景的用户不友好。预设颜色的核心价值在于快速选择把高频使用的品牌色、语义色成功/警告/错误、中性灰阶等直接铺成色块一次点击即完成选择分组管理支持把颜色按主题或场景划分成多个预设组每组拥有独立的标题、颜色清单、默认展开状态和唯一键值适合需要维护大型色板的应用视觉反馈当前选中的颜色会在预设块上自动高亮checked 状态浅色块还会有明度标识交互反馈直观。在 NG-ZORRO 中这一切通过nz-color-picker的[nzPresets]输入属性一步到位官方说明位于 预设颜色示例文档配套的可运行示例见 presets.ts。NzPresetColor 数据结构详解预设颜色的类型定义位于 typings.ts是理解整个特性的第一手资料export interface NzPresetColor { label: TemplateRefvoid | string; colors: Arraystring | NzColor; defaultOpen?: boolean; key?: string | number; }字段类型必填说明labelTemplateRefvoid \| string是预设组的标题可以是纯字符串也可以传入模板引用实现自定义标题渲染colorsArraystring \| NzColor是该组包含的颜色清单每个元素既可以是#1677ff这样的十六进制字符串也可以是NzColor实例由组件内部generateColor统一转换处理defaultOpenboolean否该预设组是否默认展开。缺省时不展开需用户点击标题打开keystring \| number否预设组的唯一键值用于 Angular 渲染时的 track 标识同一列表中建议保持唯一对应的组件输入定义在 color-picker.component.tsInput() nzPresets: NzPresetColor[] | null null;默认值为null即不传入时色板区域完全不渲染。快速上手第一组预设色从 presets.ts 中的basicPresets可以看到最基础的用法——两组预设一组给推荐色黑色系透明度阶梯一组给最近使用Ant Design 品牌色环import { Component } from angular/core; import { NzColorPickerModule, NzPresetColor } from ng-zorro-antd/color-picker; Component({ selector: nz-demo-color-picker-presets, imports: [NzColorPickerModule], template: div styledisplay: flex; flex-direction: column; gap: 16px; div h4Basic Presets/h4 nz-color-picker [nzPresets]basicPresets nzValue#1677ff / /div /div }) export class NzDemoColorPickerPresetsComponent { basicPresets: NzPresetColor[] [ { label: Recommended, colors: [ #000000, #000000E0, #000000A6, #00000073, #00000040, #00000026, #0000001A, #00000012, #0000000A, #00000005 ] }, { label: Recent, colors: [ #F5222D, #FA8C16, #FADB14, #8BBB11, #52C41A, #13A8A8, #1677FF, #2F54EB, #722ED1, #EB2F96 ] } ]; }要点模板中使用[nzPresets]basicPresets绑定即可无需额外模块NzColorPickerModule已包含全部依赖颜色字符串支持 8 位十六进制如#000000E0最后两位表示透明度面板会原样解析并渲染这也是 Ant Design 设计规范中黑色遮罩层的标准色阶写法点击任意色块后组件会把该颜色作为当前值触发(nzOnChange)回调并同步到表单值。多分组预设用 key 保证渲染稳定当预设组数量较多时建议为每组设置key。示例中的multiplePresets把颜色按主色、次色、中性色拆成三个独立分组multiplePresets: NzPresetColor[] [ { label: Primary Colors, colors: [#1677ff, #52c41a, #faad14, #f5222d, #722ed1], key: primary }, { label: Secondary Colors, colors: [#13c2c2, #eb2f96, #fa541c, #a0d911, #2f54eb], key: secondary }, { label: Neutral Colors, colors: [#000000, #434343, #666666, #999999, #cccccc], key: neutral } ];key的底层作用体现在渲染层。在 ng-antd-color-preset.component.ts 中每个分组对应的折叠面板使用track preset.key || $index作为 track 表达式for (preset of presets; track preset.key || $index) { nz-collapse-panel [nzActive]openPresets.has($index) (nzActiveChange)onPanelActiveChange($index, $event) [nzHeader]preset.label 这意味着提供了key时以 key 追踪分组未提供时退化为数组下标。如果运行期间预设列表会发生增删、排序等动态变化显式给出稳定的key可以避免 Angular 因下标错位导致的面板展开状态错乱与不必要的 DOM 重建。从实现上看openPresets集合存的是面板索引Setstring | number索引与 key 的绑定关系越稳定展开状态的还原就越可靠。控制默认折叠defaultOpen 的三种形态defaultOpen决定面板初次渲染时的展开状态。示例中的customPresets演示了同一列表内混用展开与折叠的写法customPresets: NzPresetColor[] [ { label: Brand Colors, colors: [#1677ff, #69c0ff, #bae7ff, #e6f7ff], defaultOpen: true, key: brand }, { label: Success Colors, colors: [#52c41a, #95de64, #b7eb8f, #d9f7be], defaultOpen: false, key: success }, { label: Warning Colors, colors: [#faad14, #ffc53d, #ffd666, #ffe58f], defaultOpen: false, key: warning }, { label: Error Colors, colors: [#f5222d, #ff4d4f, #ff7875, #ffa39e], defaultOpen: false, key: error } ];实现机制在 ng-antd-color-preset.component.ts 的ngOnInit中一目了然ngOnInit(): void { this.presets.forEach((preset, index) { if (preset.defaultOpen) { this.openPresets.add(index); } }); }组件初始化时扫描所有预设组把defaultOpen true的组索引写入openPresets进而驱动nz-collapse-panel的nzActive。此后用户点击标题展开/收起面板时onPanelActiveChange会增删对应索引并触发变更检测。这种声明式初始状态 交互式增量维护的设计让品牌色默认展示、其余语义色默认收起的体验可以零成本实现。源码透视预设色板的完整渲染链路与交互从输入到渲染预设色板走了一条清晰的组件调用链以下内容均可从仓库源码逐一印证第一步外层转发。NzColorPickerComponent的模板中[presets]nzPresets被传给内部取色组件 ng-antd-color-picker.component.tsif (presets presets.length 0) { nz-divider nzSizesmall / ng-antd-color-preset [value]colorValue [presets]presets (presetSelect)handleChange($event) / }注意这里的守卫条件只有nzPresets非空且长度大于 0 时分隔线和预设区才会出现否则整个区域不渲染对应的单元测试 should not render presets when null 也验证了这一行为见 color-picker.component.spec.ts。第二步分组渲染。ng-antd-color-preset.component.ts 复用NzCollapseModulenz-collapse nzGhost把每个预设组渲染为一个可折叠面板组内每个颜色渲染为一个ng-antd-color-block色块for (color of preset.colors; track $index) { ng-antd-color-block [value]value [color]getColorString(color) (nzOnClick)selectPresetColor(color) / /divgetColorString对NzColor实例调用toRgbString()归一化后作为背景色字符串则原样透传。第三步点击取色。点击色块触发selectPresetColorselectPresetColor(color: string | NzColor): void { const colorInstance typeof color string ? generateColor(color) : color; this.presetSelect.emit(colorInstance); }字符串颜色在这里被generateColor统一转换为NzColor实例后向外发射父级收到presetSelect后调用handleChange完成当前值的更新与nzOnChange事件触发。也就是说预设色块与面板主色区最终走的是同一条取值通道。第四步选中态与明度反馈。色块的选中高亮和浅色标识由 ng-antd-color-block.component.ts 计算get isChecked(): boolean { if (!this.value) { return false; } const current generateColor(this.value).toHexString(); const colorPreset generateColor(this.color).toHexString(); return current colorPreset; } get isBright(): boolean { const { r, g, b, a } generateColor(this.color).toRgb(); if (a ! undefined a 0.5) return true; const brightness r * 0.299 g * 0.587 b * 0.114; return brightness 192; }isChecked把当前值与该色块颜色都归一化为 HEX 后比较选中即挂上ant-color-picker-presets-color-checked类此逻辑同样有单元测试覆盖见 ng-antd-color-preset.component.spec.tsisBright半透明色alpha ≤ 0.5或按 Rec.601 亮度公式r*0.299 g*0.587 b*0.114计算后亮度大于 192 的颜色会被判定为浅色挂上ant-color-picker-presets-color-bright类便于主题在浅色块上绘制可辨识的边框或对勾。测试佐证。预设特性的行为约束集中在两组测试里NgAntdColorPresetComponent的单元测试覆盖了面板与色块按预设渲染defaultOpen 生效点击标题切换展开点击色块发射 NzColor 实例浅色块增加 bright 类等场景ng-antd-color-preset.component.spec.ts组件级测试则验证了传入 presets 时渲染 2 个折叠面板传入 null 时不渲染预设区点击预设色块触发 nzOnChange面板可展开收起等集成行为color-picker.component.spec.ts。与事件回调及表单的联动预设取色不会绕过组件的标准事件与表单协议事件选中预设色后nzOnChange会以{ color: NzColor; format: string }结构向外发射见 color-picker.component.tsformat取当前nzFormat的值缺省为hex。你可以借此把选中的预设色同步到业务状态、上报埋点或联动其他控件表单NzColorPickerComponent实现了ControlValueAccessor见 color-picker.component.ts因此nz-color-picker可以直接配合formControlName使用预设取色与手动画板取色都会写入同一个表单控件值校验、重置、禁用等表单语义完整保留。API 速查与最佳实践建议[nzPresets]的官方 API 说明见 ColorPicker 组件文档自 21.0.0 版本起可用类型为预设颜色项数组配合NzPresetColor的四个字段即可覆盖绝大多数场景。配置推荐做法单组少量色只提供labelcolors其余省略多组大色板每组显式提供key保证动态增删时的渲染稳定高频色优先展示给最常用的一组设置defaultOpen: true其余保持收起控制面板整体高度字符串 vs NzColor日常直接写十六进制字符串即可需要程序化构造颜色如基于主题变量时可传NzColor实例长颜色清单控制每组色块数量示例多在 410 个避免色板过长遮挡取色面板主体结合源码可以确认预设区渲染在取色面板主体下方并以分隔线隔开面板展开时色块组以折叠面板形式呈现用户可自由展开/收起各组。这套能力完全基于组件自身输入实现无需额外配置服务或全局状态是 NG-ZORRO ColorPicker 中成本最低、见效最快的常用色速选方案。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐ng-zorro-antd ColorPicker 颜色编码格式HEX / HSB / RGB实战指南ng zorro antd ColorPicker 颜色编码格式HEX / HSB / RGB实战指南 nz color picker 是 ng zorroUI组件前端如何用 Chatterbox 多说话人语音合成快速完成零样本声音克隆如何用 Chatterbox 多说话人语音合成快速完成零样本声音克隆 Chatterbox 是 Resemble AI 开源的文本转语音TTS模型家族。这篇UI组件前端如何快速获取安全APK安卓应用下载的终极指南如何快速获取安全APK安卓应用下载的终极指南 还在为安卓应用下载的烦恼而头疼吗找不到官方版本、担心病毒捆绑、想要特定历史版本却无处可寻今天我要为你推荐一个UI组件前端上一篇使用 WideWorldImporters 演示 SQL Server 实时运营分析非聚集列存储索引Nonclustered Columnstore Index性能验证下一篇如何用 Laravel-5-Generators-Extended 在5分钟内创建完整数据库迁移创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Erlang/OTP 互操作性指南:Distributed Erlang、Port、NIF 与 C/Java 库全解析
Erlang/OTP 互操作性指南:Distributed Erlang、Port、NIF 与 C/Java 库全解析

编程语言语言运行时标准库编译器并发编程 【免费下载链接】otp Erlang/OTP 项目地址: https://gitcode.com/gh_mirrors/ot/otp 点击查看 免费下载 Erlang/OTP 提供了多种与其他编程语言交换信息(互操作,interoperability)的内置机… · 2026/9/25 8:07:50

DataX适配瀚高数据库highgowriter插件实战指南
DataX适配瀚高数据库highgowriter插件实战指南

简介:本资源是为 Apache DataX 定制开发的瀚高数据库(HighGo DB)Writer 插件,面向数据同步工程师、ETL 开发者及国产数据库迁移实践者,解决 DataX 原生不支持瀚高数据库写入的痛点,适用于金融、政务等信创场… · 2026/9/25 8:07:50

网站迁移实战:从HTTP到301重定向,避坑指南
网站迁移实战:从HTTP到301重定向,避坑指南

把博客置顶公告改成"暂停更新,请到http://www.52brt.com上关注最新文章"的那天,后台私信一下子热闹起来。有人问是不是不写了,有人问新站是不是要收费,还有人一脸懵地问我这个http链接复制到浏览器怎么还是打不开——其… · 2026/9/25 8:07:44

厨房清洁用品出海KOL营销:头部+垂类+素人协同打法解析
厨房清洁用品出海KOL营销:头部+垂类+素人协同打法解析

厨房清洁用品这类产品,说实话在出海圈子里一直属于“闷声赚钱”的品类。缺点很明显——客单价不高、复购看命、产品差异化难讲;优点也很明显——刚需、消耗品、视觉化强,特别适合用视频内容来展示。这几年跨境电商平台内卷到极致,… · 2026/9/25 8:44:25

大模型时代深度伪造检测与AI滥用防御实战指南
大模型时代深度伪造检测与AI滥用防御实战指南

1. 这不是技术科普,是安全工程师的实战备忘录“深度伪造”这个词,现在听上去像科幻片里的设定,但实际它早已经不是实验室里的玩具。上周我帮一家金融风控团队做AI滥用风险评估,他们提供的样本里,一段30秒的CEO语音通话… · 2026/9/25 8:44:25

Oracle到瀚高数据库数据抽取工具:从类型映射到断点续传
Oracle到瀚高数据库数据抽取工具:从类型映射到断点续传

简介:面向 Oracle 与瀚高(HGDB)数据库运维及数据迁移人员,这份资源提供可直接运行的数据库抽取工具,用于将 Oracle 中的数据抽取、转换后导入瀚高,或实现两库间的定期同步,重点解决异构迁移时的… · 2026/9/25 8:44:25

SVM实战指南:从几何直觉到线上部署的12个关键决策
SVM实战指南:从几何直觉到线上部署的12个关键决策

1. 这不是教科书里的SVM,是我在三个真实项目里反复调参、推倒重来后写下的实战笔记“支持向量机”这五个字,第一次出现在我电脑屏幕上时,是在2015年一个凌晨三点的实验室。当时我正为某银行信用卡欺诈识别模型发愁——逻辑回归在训练集上AUC高… · 2026/9/25 8:44:19

DeskcommCRM 实战:从部署到落地,我的配置经验与踩坑总结
DeskcommCRM 实战:从部署到落地,我的配置经验与踩坑总结

DeskcommCRM 到底怎么用?我折腾了一个月,把这些经验和坑都整理出来了先说你最关心的问题:DeskcommCRM 能帮你解决什么。简单一句话,它是一套面向销售团队和中小企业的客户管理系统,核心价值是把散落在微信聊天、Excel表… · 2026/9/25 8:44:00

Agentic Orchestrator 与 Kubernetes:智能体编排的工程实践
Agentic Orchestrator 与 Kubernetes:智能体编排的工程实践

1. 从"ax"这个标题说起:一个被低估的编排入口第一次看到"ax"这个标题,很多人会以为是某个命令行工具的缩写,或者某个内部代号。但结合热搜词里的agentic、orchestrator、Kubernetes、CLI这几个关键词,方向其实… · 2026/9/25 8:43:54

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码