繁体   English   中英

angular2 / 4。 当FormsModule内置时,我应该使用Reactive Forms?

[英]angular2/4. What for should I use Reactive Forms when there is built in FormsModule?

任何人都可以解释为什么我需要使用它们?

在哪些情况下,与FormsModule相比,Reactive Forms使我的生活更简单,更好?

基本上,如果您有非常简单的要求, FormsModule就足够了。 我的第一个表单都是FormsModule 如果您只需要将表单输入绑定到模型属性,它们就很棒。

ReactiveFormsModule在您第一次使用时设置起来会更加困难,但它们可以为您提供更多控制。 因为您在组件中创建表单元素,所以您可以轻松地执行以下操作:

  • 在任何点读取/写入输入的值(甚至在构建视图之前)
  • 定义高级验证规则,包括异步验证器(例如:在用户填写注册表的其余部分时,与服务器核实输入的用户名是否可用)
  • 当值发生变化时,立即通知并立即做出反应
  • 访问本机HTML表单元素
  • 重置表单...
  • 如果你关心单元测试(好编码器应该),反应形式更容易测试,因为它们可以被迫操纵。 使用FormsModule ,只是在单元测试中获取对表单实例的引用是一件痛苦的事。

自从我进行切换后,我没有回到FormsModule 查看文档

角度反应形式促进了反应式编程,有利于显式管理非UI数据模型(通常从服务器检索)和面向UI的表单模型之间流动的数据,该模型在屏幕上保留HTML控件的状态和值。 反应形式提供了易用性反应模式,测试和验证。

使用反应式表单,您可以使用本指南中介绍的技术在组件类中创建一个Angular表单控件对象树,并将它们绑定到组件模板中的本机表单控件元素。

您可以直接在组件类中创建和操作表单控件对象。 由于组件类可以立即访问数据模型和表单控件结构,因此可以将数据模型值推送到表单控件中,并将用户更改的值拉回。 组件可以观察表单控制状态的变化并对这些变化做出反应。

反应表单和表单模块都可以根据您的需要完全接受。在Reactive Forms(模型驱动表单)中,您可以在组件上定义字段和验证,并将它们连接到您的html模板。它需要额外的代码,但它有一些好处。

例如,您可以根据代码中的决策更多地动态构建表单和验证。

另一个很大的好处是它使您的所有验证逻辑单元都可测试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM