关于 primeng-developer
面向 Angular 项目的 PrimeNG 开发技能,提供与版本相关的组件、主题、表单、无障碍和迁移指导。适合开发或维护 PrimeNG 应用的开发者,重点是核对项目版本并避免使用不兼容 API。
主要功能
- 01PrimeNG 版本与迁移指导
- 02Styled、Unstyled 和 PassThrough 定制
- 03独立组件使用模式
- 04表单与无障碍指导
- 05组件 API 与配置参考
适用场景
- 01为已安装的 PrimeNG 版本选择 API
- 02配置主题与组件样式
- 03将 PrimeNG 控件集成到表单
- 04从旧版 PrimeNG 迁移应用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mofirojean/ angular-ui-skills --skill primeng-developer安装后在 Claude Code 中输入/primeng-developer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/accessibility.mdbuttons.mddata-display.mddisplay.mdform-controls.mdforms.mdlayout.mdmenus.mdmigration.mdoverlays.mdpassthrough.mdsetup.mdstyled-vs-unstyled.mdtheming.md详细介绍
PrimeNG 开发指南
与
angular-developer配套使用——该技能提供 Angular 基础知识(信号、DI、路由、表单、SSR、无障碍功能)。本技能专注于 PrimeNG 的特性。建议同时安装两者,以获得最佳体验。
兼容性
- 跟踪版本: PrimeNG
22.1.3(发布于 2026-10-20),以及@primeuix/themes和@primeuix/styles的3.x版本(当前为3.0.2)。PrimeNG 与 Angular 的主版本保持一致,因此 v22 需要 Angular v22(从 22.1 起,peer 依赖为@angular/core@^22.1.0;在 22.0.x 中为^22.0.0)。 - 适用项目: PrimeNG v18 → v22 项目。本技能的参考资料包含
migration.md,涵盖 v18 组件重命名(Calendar→DatePicker、Dropdown→Select 等)以及 v21→v22 的移除项,因此 v18-v21 项目也可以使用本技能,但主题和部分组件 API 可能存在偏差。与本技能最匹配的是 v22。 - v21 → v22: v22 与 Angular 22 对齐,并升级至
@primeuix/themes/@primeuix/stylesv3;同时**最终移除(删除)**了早期版本中标记为“将在 v22 中移除”的 API,包括@primeng/themes导入路径、pTemplate、styleClass、showTransitionOptions/hideTransitionOptions、驼峰式选择器,以及pButton的图标/标签属性等。应视为这些 API 已不存在,而不只是已弃用。请参阅 migration.md。 - v22.0 → v22.1: 没有破坏性变更。22.1 新增了用于微前端和嵌入式小组件的实验性
withIsolation()功能(primeng/isolation)、p-select上的filterMessage/selectionMessage/emptySelectionMessage输入属性、p-tree上的filteredNodes模型,并将 Angular peer 依赖提升至^22.1.0。还需注意,v22 的组件按根字体大小为 16px 进行尺寸设计;根字体仍为 14px 的应用应使用-compat预设(参阅 theming.md)。请参阅 migration.md。 - 文档域名: 官方文档已从
primeng.org迁移至primeng.dev(旧链接会通过 301 重定向)。 - Angular: 需要 v18 或更高版本(PrimeNG v22 需要 v22)。PrimeNG 组件从 v18 起采用独立组件。本技能假定使用独立组件、控制流(
@if/@for)和基于信号的 API。 - Tailwind: v3 或 v4,并使用
tailwindcss-primeui插件(可选,用于无样式模式)。 - 不支持: PrimeNG v17 及更低版本(采用基于
prime.css的不同主题模型)、Angular v17 及更低版本(NgModule 模式)。
如果项目使用的 PrimeNG 版本低于 v18,请引导用户查阅 PrimeNG v17 文档,并拒绝在 v17 项目中生成 v18 及更高版本的模式,这些模式无法编译。
-
提供指导前,务必先检查项目的 PrimeNG 版本。PrimeNG v18 引入了主要组件重命名(Calendar→DatePicker、Dropdown→Select、InputSwitch→ToggleSwitch、OverlayPanel→Popover、Sidebar→Drawer)和新的设计令牌主题系统。
package.json是权威依据;如有疑问,请先查阅该文件,再推荐 API。请参阅 migration.md。 -
添加组件前,先确认项目使用的主题模式:
- 如果导入了
@primeuix/themes并配置了providePrimeNG({ theme: ... })→ 有样式模式(默认)。 - 如果在
providePrimeNG中设置了unstyled: true,或项目使用了tailwindcss-primeui→ 无样式模式。 - 两种模式的自定义方式有本质区别。请参阅 styled-vs-unstyled.md。
- 如果导入了
-
组件从 v18 起采用独立组件。务必导入独立类(例如从
'primeng/button'导入Button),不要使用旧版*Module。为保持向后兼容,仍会导出旧版模块,但不应在新代码中使用。 -
生成 PrimeNG 代码后,运行
ng build检查编译错误。AI 最常见的错误有:(a)从@primeng/themes而非@primeuix/themes导入(已弃用的路径);(b)在 v18 至 v20 项目中忘记调用provideAnimationsAsync()(PrimeNG v21+ 使用原生 CSS 动画,不再需要它);(c)在 v18 重命名组件后,仍使用 v17 的组件名称(Calendar、Dropdown、OverlayPanel、Sidebar、InputSwitch);(d)在组件上写styleClass="…",该写法自 v20 起已弃用,应改用原生的class="…"(或[class]/[ngClass]);(e)在以独立方式导入的组件中写pTemplate="item",除非导入SharedModule(或重新导出它的TableModule等*Module),否则PrimeTemplate指令不在作用域内,因此模板不会注册,组件会渲染出空行,且不会出现构建错误或控制台错误。应改用模板引用(<ng-template #item>、#content、#header等),每个 v21 组件都会直接查询这些引用。请参阅 setup.md 和 migration.md。
PrimeNG 架构:有样式、无样式和 PassThrough
PrimeNG 以编译后的形式随 node_modules 一同提供,没有复制源码的 CLI。自定义可通过以下三种递进方式实现:
- 设计令牌(有样式模式):通过
definePreset(Aura, {...})在预设级别覆盖主题变量。适用于大多数主题需求。请参阅 theming.md。 - PassThrough(
pt):逐组件的属性,可向任意内部 DOM 区域注入类和属性。有样式和无样式模式均适用。设计令牌无法满足需求时使用。请参阅 passthrough.md。 - 无样式模式:彻底移除 PrimeNG 的样式,并提供自己的样式(通常通过
tailwindcss-primeui使用 Tailwind)。适用于已有设计系统的团队。请参阅 styled-vs-unstyled.md。
默认使用带 Aura 预设的有样式模式。 需要覆盖特定内部区域时使用 PassThrough。只有在项目决定采用 Tailwind 驱动的设计系统时,才使用无样式模式。
安装与主题设置
- 设置:安装
primeng @primeuix/themes @primeuix/styles,配置providePrimeNG()(v18 至 v20 中还需配置provideAnimationsAsync()),并了解常见问题。请阅读 setup.md - 主题设置:Aura / Lara / Nora / Material 预设、设计令牌、暗色模式、
definePreset覆盖、运行时切换预设、CSS 图层顺序。请阅读 theming.md - 有样式与无样式:何时使用各模式、Tailwind v4 与
tailwindcss-primeui的集成、Volt UI 参考模式。请阅读 styled-vs-unstyled.md - PassThrough:
ptAPI、providePrimeNG中的全局pt、嵌套组件前缀(pcBadge)、ptOptions.mergeSections和mergeProps。请阅读 passthrough.md
组件
PrimeNG 按类别提供了 80 多个组件。每个类别文件都介绍组件 API、常见模式和注意事项。
- 表单控件:AutoComplete、CascadeSelect、Checkbox、ColorPicker、DatePicker、Editor、FloatLabel、IconField、IftaLabel、InputMask、InputNumber、InputOtp、InputText、Knob、Listbox、MultiSelect、Password、RadioButton、Rating、Select、SelectButton、Slider、Textarea、ToggleButton、ToggleSwitch、TreeSelect。阅读 form-controls.md
- 按钮:Button、SpeedDial、SplitButton。阅读 buttons.md
- 叠加层:ConfirmDialog、ConfirmPopup、Dialog、Drawer、DynamicDialog、Popover、Toast、Tooltip。阅读 overlays.md
- 布局:Accordion、BlockUI、Card、Divider、Fieldset、Panel、Scroller(VirtualScroller)、ScrollTop、Splitter、Stepper、Tabs、Toolbar。阅读 layout.md
- 数据展示:Carousel、DataView、Galleria、OrderList、Paginator、PickList、Table、Timeline、Tree、TreeTable。阅读 data-display.md
- 显示:Avatar、Badge、Chip、Image、Inplace、Message、MeterGroup、OverlayBadge、ProgressBar、ProgressSpinner、Ripple、Skeleton、Tag、Terminal。阅读 display.md
- 菜单:Breadcrumb、ContextMenu、Dock、MegaMenu、Menu、MenuBar、PanelMenu、TieredMenu。阅读 menus.md
表单集成
- 表单:将 PrimeNG 表单组件连接到 ReactiveForms 或 Signal Forms,使用
[invalid]属性(v20+)替代.ng-invalid.ng-dirty,ControlValueAccessor模式,以及验证状态的显示。阅读 forms.md
无障碍
- 无障碍:内置符合 WCAG 2.1 AA 标准的支持、
p-sr-only实用类、各组件的 ARIA 规范、键盘导航和焦点管理。阅读 accessibility.md
迁移
- 迁移:v18 组件重命名(Calendar→DatePicker 等)、已弃用的 API、使用
[invalid]属性替代.ng-invalid.ng-dirty,以及用设计令牌系统替代旧版 SCSS 主题。阅读 migration.md