用途:在编写、审查、升级或调试现代 Angular 应用时使用,先了解破坏性变更与默认行为,再按任务查阅对应主题参考。
主要能力与主题索引:兼容性、安全与发布(Node.js/TypeScript/RxJS 组合、浏览器策略、支持周期、升级跳点、CSP 与安全变更);核心响应式(resource、effect、运行时绑定、无 Zone 变更检测、服务、signals 与类型变更);Signal Forms(字段树、schema、校验、提交、自定义控件、Material/Aria 集成);SSR、水合与路由(混合渲染、服务端路由、增量水合、PendingTasks、传输缓存、引擎、路由生命周期);模板与动画(模板语法、诊断、CSS 进出动画、defer 触发、宿主指令匹配);测试与工具(Vitest、迁移、HMR、编译器检查、CLI、构建变更、移除的测试 API);UI、平台与 DevTools(Angular Aria、Material、CDK、locale 数据、性能分析与调试可视化)。
关键默认与变更:组件默认 OnPush,省略 changeDetection 即为 OnPush,需要完全即时检查时使用 ChangeDetectionStrategy.Eager;新应用默认无 Zone,迁移时移除 provideZoneChangeDetection()、zone.js polyfill 与依赖;服务端路由路径不带斜杠,使用 renderMode 与 getPrerenderParams,回调中需在任何 await 前同步调用 inject();内置 Protractor builder 与 Hammer.js 集成已移除,实验性 Jest 与 Web Test Runner 集成已弃用,基于 Webpack 的 builder 与 @ngtools/webpack 已弃用,TestBed.getFixture() 改为 TestBed.getLastFixture(),ChangeDetectorRef.checkNoChanges() 已移除;安全行为更严格,SVG 动画 URL 属性与 object[data] 视为敏感 URL 上下文,翻译不能指向 iframe src。
常用 API:resource 用于响应式参数驱动的异步读取,params 返回 undefined 时保持空闲,参数变化会中止上一次加载;读取前先检查 hasValue(),因为 value() 在错误状态会抛错;httpResource、rxResource、stream、resourceFromSnapshots 分别对应不同数据源。effect 中允许写 signal,DOM 相关工作使用 afterRenderEffect,阶段为 earlyRead、write、mixedReadWrite、read。Signal Forms 将可写 model signal 转为可调用的类型化字段树,初始 model 中必须存在每个可绑定字段。CSS 进出动画使用 animate.enter 与 animate.leave。@angular/aria 提供无样式指令。createComponent 与 TestBed.createComponent 支持 inputBinding、outputBinding、twoWayBinding。@Service() 为简洁的根单例形式,可配合 injectAsync 代码分割。
测试与升级:新项目使用 Vitest 与 Node DOM 模拟器,ng test 默认监听;无 Zone 测试优先使用 await fixture.whenStable()。升级时按目标次版本行匹配 Angular、Node.js、TypeScript 与 RxJS,使用 ng update 逐个大版本迁移,运行提供的迁移,并重新测试 locale 输出、URL 净化、翻译属性、服务端重定向与水合传输缓存。
限制:预览 API 可能不受常规弃用保证约束,长期库采用前需确认当前签名。资料未提供具体版本号、价格、平台与效果信息。