用途:指导 Angular 项目中的表单开发,根据场景在 Signal Forms(实验性)与 Reactive Forms 之间做出选择,并覆盖验证与表单状态处理。
选型建议(据资料):新应用且使用 signals 时可选 Signal Forms(实验性);生产应用建议 Reactive Forms;简单表单可用模板驱动;Signal Forms 标注为 v21+ 且为实验性。
主要能力与用法要点:
- Signal Forms 从 '@angular/forms/signals' 导入 form、FormField、required、email 等,通过 form({...}) 定义表单并在模板用 [formField] 绑定,优势包括自动双向绑定、类型安全的字段访问、基于 schema 的验证,且构建在 signals 之上。
- Reactive Forms 导入 FormBuilder、Validators、ReactiveFormsModule,模板使用 [formGroup] 与 formControlName。资料强调:始终使用 fb.nonNullable.group() 以获得类型安全;使用 getRawValue() 获取类型化值;Reactive Forms 是同步的,更易于测试。
- 嵌套表单与 FormArray:可用 fb.group 嵌套结构(如 name、address),用 fb.array 管理数组项(如 phones),通过 getter 以 FormArray 访问,并用 push 添加控件。
适用场景:登录等含验证的表单、需要类型安全的表单状态管理,以及包含嵌套结构或动态列表的表单。
限制:Signal Forms 为实验性,仅适合新应用与信号场景;生产环境推荐 Reactive Forms。资料未提供价格、平台支持范围、性能数据或完整 API 细节。