我一直在读有关Angular2new forms API的文章,似乎在表单上有两种方法,一种是模板驱动的表单,另一种是react 式或模型驱动的表单.

我想知道两者之间的实际区别,不是语法上的区别(显然),而是实际用途,以及哪种方法在不同的场景中更有利.

推荐答案

Template Driven Forms Features

  • 易于使用
  • 适用于简单场景,不适用于复杂场景
  • 类似于AngularJS
  • 双向数据绑定(使用[(NgModel)]语法)
  • 最小组件代码
  • 表单及其数据的自动跟踪(由Angular处理)
  • 单元测试是另一个挑战

Reactive Forms Features

  • 更灵活,但需要大量练习
  • 处理任何复杂的场景
  • 没有进行数据绑定(大多数开发人员首选不可变的数据模型)
  • 更多的组件代码和更少的HTML标记
  • 可以进行react 性转换,例如
  • 更简单的单元测试

Angular相关问答推荐

当我的Auth-guard被调用时,当在带有canActivate - Angular v17的路由上重新加载页面时,它会短暂地呈现登录页面

升级到angular 17并转换为独立的加载器拦截器后,

tabindex on button on button in MatMenu in angular不工作

Angularmaterial 中的处理mat—radio—button表单值访问器

Angular 客户端应用程序无法从停靠容器解析后端服务的地址

从API动态加载MAT表数据时禁用分页

使用指令的 Angular 自定义验证在 ng-change 中无法正常工作

获取 Angular 中所有子集合 firestore 的列表

RxJS如何按顺序进行POST请求,只有在前一个完成后才会触发新的请求?

在生产模式下使用带Angular 的 livekit

MatTooltip 显示在 html 原生对话框下方

带有Angular 中断的进度条

Angular:显示带有嵌套子项的内容投影

Rxjs Observable:仅为第一个订阅者获取 HTTP 数据,为其余订阅者获取缓存数据

将查询参数附加到 URL

错误:formControlName 必须与父 formGroup 指令一起使用.您需要添加一个 formGroup 指令

获取从(keypress)angular2按下的键

如何使用 Angular 6 工作的 ngModel 创建自定义输入组件?

Angular2 - 从外部验证和提交表单

如何在 Angular 4 中翻译 mat-paginator?