17

存在ReactiveFormModuleFormsModule

import {
  FormsModule,
  ReactiveFormsModule
} from "@angular/forms";

我什么时候应该使用ReactiveFormModule以及与FormModule相比提供此模块的内容。

4

3 回答 3

14

Formsmodule- Angular 1 通过著名的 ng-model 指令处理表单。Angular 2 现在提供了一个相同的机制,也称为 ngModel,它允许我们构建现在称为模板驱动的表单。

与 AngularJs 不同,ngModel 和其他与表单相关的指令默认不可用。

ReactiveFormsModule用于模型驱动形式。每个表单都有一个状态,可以通过许多不同的交互进行更新,并且由应用程序开发人员来管理该状态并防止它被破坏。对于非常大的表单,这可能很难做到,并且可能会引入一类潜在的错误。

您可以在哪里编写不在 html 中的验证。在这种情况下,您可以附加许多验证和包装表单。

我从这里得到这个。有更好的解释

于 2016-09-22T12:51:40.960 回答
8

我想澄清 Oto Lolua 的回答。他们对 ReactiveFormsModule 的解释是从他们链接的文章中的错误上下文中取出的(Oto 对该 ReactiveFormsModule 的解释段落实际上是指该文章中的FormsModule,而不是 ReactiveFormsModule )。

我在这里引用同一篇文章(摘自其摘要):

模板驱动表单对于简单的表单可能稍微不那么冗长,但差异并不显着。反应式表单实际上更强大,并且具有几乎相同的可读性。

很可能在大型应用程序中,我们最终需要反应驱动表单的功能来实现更高级的用例,例如自动保存。

于 2017-05-10T13:55:34.940 回答
5

根据我的经验,主要区别在于ReactiveFormsModule可以通过实例化类、向表单添加一些值并运行测试来对表单验证逻辑进行单元测试。
FormsModule有点复杂,因为您需要部署应用程序并使用浏览器(或Phantomjs)对其进行测试。
还有另一个区别:ReactiveFormsModule 的类提供了允许使用功能响应式编程构建 UI 的 API 。

于 2016-09-22T11:39:59.960 回答