Reactive forms
Template-driven forms
Reactive forms更强大。
Reactive forms更具可伸缩性,可重用性和可测试性。
如果表单是应用程序的关键部分,或者您的应用程序已经使用响应模式构建,则最适合使用它们。在这两种情况下,最好使用Reactive forms。
如果要向应用程序中添加简单表单,最好使用Template-driven forms。例如: 电子邮件列表注册表单。
Template-driven forms在应用程序中易于使用,但不如Reactive表单那样可扩展。
Template-driven forms主要用于应用程序需要非常基本的表单和逻辑的情况。可以轻松地在模板中对其进行管理。
比较指数 | Reactive Forms | Template-driven Forms |
设置(表单模型) | 反应形式更为明确。它们是在组件类中创建的。 | 模板驱动的形式不太明确。它们是由指令创建的。 |
数据模型 | 结构化 | 非结构化 |
可预测性 | 同步 | 异步 |
表单验证 | 功能 | 指令 |
可变性 | 不可变 | 可变 |
可扩展性 | 低级别的API访问权限 | 基于API的抽象 |
FormControl: 用于跟踪单个表单控件的值和验证状态。
FormGroup: 用于跟踪表单控件集合的相同值和状态。
FormArray: 它用于跟踪表单控件数组的相同值和状态。
ControlValueAccessor: 它用于在Angular FormControl实例和本机DOM元素之间建立桥梁。
import { Component } from '@angular/core'; import { FormControl } from '@angular/forms'; @Component({ selector: 'app-reactive-favorite-color', template: ` Favorite Color: <input type="text" [formControl]="favoriteColorControl"> ` }) export class FavoriteColorComponent { favoriteColorControl = new FormControl(''); }
import { Component } from '@angular/core'; @Component({ selector: 'app-template-favorite-color', template: ` Favorite Color: <input type="text" [(ngModel)]="favoriteColor"> ` }) export class FavoriteColorComponent { favoriteColor = ''; }