Angular2 中的 ReactiveFormsModule 与 FormsModule

ReactiveFormsModule vs. FormsModule in Angular2

存在 ReactiveFormModuleFormsModule.

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

我什么时候应该使用 ReactiveFormModule 以及与 FormModule.

相比什么提供了这个模块

根据我的经验,主要区别在于 ReactiveFormsModule 可以通过实例化 class、向表单添加一些值和 运行 测试来对表单验证逻辑进行单元测试.
使用 FormsModule 会稍微复杂一些,因为您需要部署应用程序并使用浏览器(或 Phantomjs)对其进行测试。
还有另一个区别:ReactiveFormsModule 有 classes 提供了一个 API 允许使用 Functional Reactive Programming.

构建 UI

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

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

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

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

我从这里得到的。有更好的explanation:

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

我在这里引用了同一篇文章 (from its summary):

Template Driven Forms are maybe for simple forms slightly less verbose, but the difference is not significant. Reactive Forms are actually much more powerful and have a nearly equivalent readability.

Most likely in a large scale application we will end up needing the functionality of reactive driven forms for implementing more advanced use cases like for example auto-save.