Angular 状态管理指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/angular-state-management。
技能介绍
你在解决什么问题
Angular 应用里状态往往散落在组件、BehaviorSubject 服务和 HTTP 回调之间:局部 UI 与全局业务数据边界不清,Signals 与 RxJS 混用导致订阅泄漏或重复渲染,乐观更新与 NgRx Effects 的取舍也缺少统一参照。本技能把「该放哪一层、该用哪套 API」写成可执行的决策与模式,而不是泛泛介绍库名。
技能如何组织内容
状态分类与选型用表格区分局部、共享、全局、服务端、URL 与表单状态,并对应到 signal()、Signal 服务、NgRx/Akita/Elf、ActivatedRoute、Reactive Forms 等方案。
快速上手路径从三种 Signal 模式入手:简单 Signal 服务、功能级 Signal Store、以及 NgRx 的 SignalStore;再覆盖 NgRx Store 的功能切片(feature slice)与组件消费方式,以及 Component Store 这类基于 RxJS 的局部功能状态。
服务端状态单独讲 HTTP 与 Signals 的组合,避免把远程缓存误当成全局 reducer。
最佳实践与反模式强调:computed() 承载派生数据、用 set()/update() 改信号、复杂流程才上 NgRx;避免在 store 里存可计算字段、在组件里手动 subscribe 而模板不用信号,以及 RxJS 与 Signals 无桥接地混写——文档给出 toSignal / toObservable 的迁移与桥接思路。
适用边界
任务与 Angular 状态无关时不要启用;需要 React 状态管理应改用对应 React 技能。技能不替代官方文档细节,而是帮你在 Signals、NgRx、Akita 之间做架构级选择并落地常见模式。
使用场景
- 新功能要在多个路由间共享购物车与用户偏好,需要选定全局 store 并划分 feature slice
- 组件内表单与列表联动变复杂,要在 Signal 服务、Component Store 与 SignalStore 之间做选型
- 线上接口延迟高,要在 Angular 里设计乐观更新并避免与 Effects 逻辑冲突
- 老项目大量 BehaviorSubject 服务,需要按文档路径迁移到 signal() 并保留 RxJS 桥接
适合人员
- 负责 Angular 单体或微前端模块、要在 Signals 与 NgRx 之间定架构规范的前端 Tech Lead
- 维护含 NgRx/Akita 旧代码、需把局部状态迁到 Signal 并排查订阅泄漏的 Angular 工程师
- 正在实现列表-详情-编辑联动的功能开发者,需要 component 级 store 与 HTTP 缓存策略
- 从 React 转 Angular 的同事误用全局化状态,需要对照分类表把 URL/表单状态留在合适层级的开发者