我一直在阅读关于Angular2新的表单API的内容,看起来有两种处理表单的方法,一种是基于模板的表单,另一种是响应式或基于模型驱动的表单。
我想知道这两种方法之间的实际区别,不是语法上的差异(显然),而是在不同场景下哪种方法更有利并且实际用途如何。 此外,选择其中一种方法是否会带来性能提升?如果是,为什么?
我一直在阅读关于Angular2新的表单API的内容,看起来有两种处理表单的方法,一种是基于模板的表单,另一种是响应式或基于模型驱动的表单。
我想知道这两种方法之间的实际区别,不是语法上的差异(显然),而是在不同场景下哪种方法更有利并且实际用途如何。 此外,选择其中一种方法是否会带来性能提升?如果是,为什么?
模板驱动表单功能:
[(NgModel)]
语法)响应式表单功能:
响应式表单:
模板驱动表单:
简而言之,如果表单对您的应用程序非常重要,或者您的应用程序使用响应式模式,则应使用响应式表单。否则,如果您的应用程序对表单有基本和简单的要求,例如登录,则应使用模板驱动表单。
模板驱动表单:
使用FormsModule导入
使用ngModel指令构建的表单只能在端到端测试中进行测试,因为这需要DOM的存在
表单值将会出现在两个不同的位置:视图模型即ngModel
随着我们向字段添加越来越多的验证器标签或者开始添加复杂的交叉字段验证,表单的可读性会降低
响应式表单:
通常用于大规模的应用程序
实际上更容易实现复杂的验证逻辑
使用ReactiveFormsModule导入
表单值将会出现在两个不同的位置:视图模型和FormGroup
易于单元测试: 只需实例化类,设置一些表单控件的值,并对表单全局有效状态和每个控件的有效状态执行断言即可。
使用Observables进行反应式编程
例如: 密码字段和密码确认字段需要是相同的
响应式方式:我们只需要编写一个函数并将其插入FormControl中
模板驱动方式:我们需要定义一个指令,然后以某种方式传递两个字段的值
https://blog.angular-university.io/introduction-to-angular-2-forms-template-driven-vs-model-driven/