Answers:
模板驱动的表单功能
[(NgModel)]
语法)响应式表单功能
我认为这是关于代码,策略和用户体验的讨论。
综上所述,我们更改模板驱动的做法,是比较容易的工作吧,以反应性的给我们(在模型驱动的方法)更多的控制权,这导致更好的可测试的形式,通过利用HTML之间的解耦(设计/ CSS团队可以在这里工作)和组件的业务规则(Angular / js专家成员),并通过诸如响应式转换,相关验证之类的功能来改善用户体验,并处理复杂的场景,如运行时验证规则和动态字段重复。
本文对此有很好的参考: Angular 2表单-模板驱动和模型驱动方法
反应形式:
模板驱动的表单:
总而言之,如果表单对您的应用程序非常重要,或者在应用程序中使用了响应式模式,则应使用响应式表单;否则,您的应用程序对登录等表单具有基本和简单的要求,则应使用模板驱动的表单。
模板驱动形式:
使用FormsModule导入
使用ngModel指令构建的表单只能在端到端测试中进行测试,因为这需要存在DOM
表单值将在两个不同的位置可用:视图模型即ngModel
表单验证,因为我们向字段添加了越来越多的验证器标签,或者当我们开始添加复杂的跨字段验证时,表单的可读性降低了
反应形式:
一般可用于大型应用
复杂的验证逻辑实际上更易于实现
使用ReactiveFormsModule导入
表单值将在两个不同的地方可用:视图模型和FormGroup
易于进行单元测试:我们可以通过实例化类,在表单控件中设置一些值并针对表单全局有效状态和每个控件的有效性状态执行断言来做到这一点。
使用可观察对象进行反应式编程
例如:密码字段和密码确认字段必须相同
反应式:我们只需要编写一个函数并将其插入FormControl
模板驱动方式:我们需要定义一个指令,并以某种方式将两个字段的值传递给它
https://blog.angular-university.io/introduction-to-angular-2-forms-template-driven-vs-model-driven/