ReactiveFormsModule与Angular2中的FormsModule

时间:2016-09-22 11:19:34

标签: angular angular2-forms

存在 ReactiveFormModule FormsModule

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

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

4 个答案:

答案 0 :(得分:12)

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

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

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

您可以在html中编写Validations。在这种情况下,您可以附加许多验证和换行表单。

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

答案 1 :(得分:5)

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

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

  

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

     

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

答案 2 :(得分:3)

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

答案 3 :(得分:-3)

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

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

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

您可以在html中编写Validations。在这种情况下,您可以附加许多验证和换行表单。