我一直在阅读Angular2新的Forms API,似乎表单上有两种方法,一种是模板驱动形式,另一种是反应式或模型驱动型 .
我想知道两者之间的实际差异,不是语法上的差异(显然),而是实际用途,哪种方法在不同情况下有更多好处 . 另外,选择其中一个是否有性能提升?如果是,为什么?
Template Driven Forms Features
易于使用
适用于简单场景,对于复杂场景无效
与AngularJS相似
双向数据绑定(使用 [(NgModel)] 语法)
[(NgModel)]
最小的组件代码
自动跟踪表单及其数据(由Angular处理)
单元测试是另一项挑战
Reactive Forms Features
更灵活,但需要大量练习
处理任何复杂的场景
没有完成数据绑定(大多数开发人员首选的不可变数据模型)
更多组件代码和更少的HTML标记
可以实现反应性转换,例如
根据去抖时间处理事件
在组件不同时处理事件,直到更改为止
动态添加元素
更简单的单元测试
我认为这是关于 code , strategy 和 user experience 的讨论 .
总之,我们改变 template-driven 方法,它是 more easy to work ,用 reactive (在模型驱动的方法中)给我们 more control ,通过利用HTML之间的解耦来产生更好的可测试形式(设计/ CSS团队可以在这里工作)和组件的业务规则(angular / js专家成员)和 improve the user experience 具有反应转换,相关验证和 handle complex scenarios 等功能作为运行时验证规则和动态字段复制 .
这篇文章是一个很好的参考:Angular 2 Forms - Template Driven and Model Driven Approaches
以下是DeborahK(Deborah Kurata)解释的模板驱动和反应形式之间的比较总结,
3 回答
Template Driven Forms Features
易于使用
适用于简单场景,对于复杂场景无效
与AngularJS相似
双向数据绑定(使用
[(NgModel)]
语法)最小的组件代码
自动跟踪表单及其数据(由Angular处理)
单元测试是另一项挑战
Reactive Forms Features
更灵活,但需要大量练习
处理任何复杂的场景
没有完成数据绑定(大多数开发人员首选的不可变数据模型)
更多组件代码和更少的HTML标记
可以实现反应性转换,例如
根据去抖时间处理事件
在组件不同时处理事件,直到更改为止
动态添加元素
更简单的单元测试
我认为这是关于 code , strategy 和 user experience 的讨论 .
总之,我们改变 template-driven 方法,它是 more easy to work ,用 reactive (在模型驱动的方法中)给我们 more control ,通过利用HTML之间的解耦来产生更好的可测试形式(设计/ CSS团队可以在这里工作)和组件的业务规则(angular / js专家成员)和 improve the user experience 具有反应转换,相关验证和 handle complex scenarios 等功能作为运行时验证规则和动态字段复制 .
这篇文章是一个很好的参考:Angular 2 Forms - Template Driven and Model Driven Approaches
以下是DeborahK(Deborah Kurata)解释的模板驱动和反应形式之间的比较总结,