Angular UI 模式
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/angular-ui-patterns。
技能介绍
为什么需要一套 UI 模式
Angular 17+ 的控制流(@if、@for、@defer)和 Signal 让状态表达更清晰,但团队仍容易在同一屏里同时出现骨架、旧数据和微调器,或在请求失败时静默吞错。这类问题不会靠「多写几个 *ngIf」解决,需要的是加载、错误、空态、按钮反馈之间的一致决策。
技能覆盖什么
本技能把日常交付拆成可执行的规则与模式:
- 加载状态:黄金法则是「仅当没有可展示数据时才显示加载」;并给出骨架屏 vs 微调器的对照(已知布局用骨架、按钮/模态操作用微调器)。
- 控制流:条件渲染、
@for配合track、@defer做渐进披露。 - 错误处理:分层处理,永不静默吞没错误;配合错误状态组件模式。
- 按钮与表单:异步期间始终禁用触发器,必要时在按钮上显示加载;表单需兼顾加载与校验反馈。
- 空状态:每个列表/集合必须有上下文相关的空态(含
@empty块思路)。 - 反模式清单与UI 状态检查清单(错误、加载、空态、乐观更新回滚、可访问性等),便于 Code Review 或上线前自检。
与 angular、angular-state-management(Signal 存状态)、testing-patterns(覆盖各 UI 状态)可组合使用。
注意点
这是模式与检查清单,不是组件库:具体骨架、Toast、对话框仍要按项目设计系统实现。乐观更新必须在失败时显式回滚;@defer 解决的是按需加载,不能替代错误与空态设计。
使用场景
- 列表页在已有缓存数据时仍全屏转圈,需按「仅无数据时显示加载」调整 Signal/异步流与 `@if` 分支。
- 新功能上线前,用文档中的 UI 状态检查清单逐项核对错误展示、空态、`@empty` 与按钮异步禁用。
- 仪表盘首屏组件过重,用 `@defer` 分块加载,并为每块定义错误态与「部分数据可用」的降级展示。
- 接口失败被 `catch` 后界面仍像成功,需补分层错误组件、表单字段关联错误与提交期按钮加载/禁用。
适合人员
- 维护 Angular 业务页(列表、详情、表单)的前端工程师,想统一骨架屏与微调器的选用规则。
- 正在把 `*ngIf`/旧语法迁到 `@if`、`@for`、`@defer` 的开发者,需要空态与 `@empty` 的团队约定。
- 在 Code Review 里反复看到静默吞错或乐观更新不回滚的 Angular Tech Lead,想用检查清单约束交付质量。
- 负责组件或 E2E 测试的工程师,需要按加载、错误、空态、按钮状态设计可重复的测试场景。