我在Angular 4上处理表单,我不知道使用NgForm和FormGroup处理错误和输入验证器有什么区别。处理表单有什么大的区别吗?
NgForm
FormGroup
niwlg2el1#
如果我没有阅读错的话,您将遇到模板驱动表单和React式表单之间的差异。
模板驱动表单正如它听起来那样;模板驱动。大部分(如果不是全部)逻辑都在模板中。模板驱动表单非常适合不涉及很多复杂逻辑的简单表单。Template Driven FormsReact式表单采用不同的方法,在模型中定义表单逻辑。React式表单通常更高级一些,在功能和灵活性方面允许进行大量定制。Reactive Forms
ds97pgxw2#
我的评论是非常一般性的。要了解更多细节,请查看React式表单与模板驱动表单。这也是一个策略、同步性、测试需求和良好实践的问题(例如,查看此处:https://www.pluralsight.com/guides/difference-between-template-driven-and-reactive-forms-angular/)
一般来说,它们的作用是相同的,但是直接在模板中使用ngForm,您就使用了策略Template-Driven。在这种情况下,元素结果是一个Object,它具有FormGroup类型的键(key 'form)'。那么ngForm里面有一个表单组。控件在你的模板里。要在其他地方访问它,你需要访问DOM的元素或者使用一个事件来传递元素。2另一方面,在你的JS/TS中使用一个变量=FormGroup,并且在你的模板中绑定这个变量,你使用的是Reactive Form策略。3在这种情况下,变量直接是FormGroup类型的对象。控件不在模板内,但绑定到模板。这样更容易从其他位置访问好吧,如果ngForm有一个表单组在里面,那么我们可以告诉ngForm更完整?不完全是。只是不同的方式有相同的结果。模板驱动保持你的值在模板上,你将需要直接在模板内操作它,或者有一点更多的工作要在你的TS中操作它,例如使用事件(例如,如何使用模板驱动与React式表单在表单中创建自定义验证)。FormGroup将直接为您提供从TS的所有访问权限,您可以在转到模板之前控制它,或者从另一个代码访问它,而不必从DOM(. getElementById ....)获取值。那么在我看来,这是一个关于你的需求、你的策略和你所采用的良好实践的问题。但基本上,它们是为了给你同样的结果而创造的。
2条答案
按热度按时间niwlg2el1#
如果我没有阅读错的话,您将遇到模板驱动表单和React式表单之间的差异。
模板驱动表单正如它听起来那样;模板驱动。大部分(如果不是全部)逻辑都在模板中。模板驱动表单非常适合不涉及很多复杂逻辑的简单表单。Template Driven Forms
React式表单采用不同的方法,在模型中定义表单逻辑。React式表单通常更高级一些,在功能和灵活性方面允许进行大量定制。Reactive Forms
ds97pgxw2#
我的评论是非常一般性的。要了解更多细节,请查看React式表单与模板驱动表单。这也是一个策略、同步性、测试需求和良好实践的问题(例如,查看此处:https://www.pluralsight.com/guides/difference-between-template-driven-and-reactive-forms-angular/)
一般来说,它们的作用是相同的,但是直接在模板中使用ngForm,您就使用了策略Template-Driven。在这种情况下,元素结果是一个Object,它具有FormGroup类型的键(key 'form)'。那么ngForm里面有一个表单组。控件在你的模板里。要在其他地方访问它,你需要访问DOM的元素或者使用一个事件来传递元素。2另一方面,在你的JS/TS中使用一个变量=FormGroup,并且在你的模板中绑定这个变量,你使用的是Reactive Form策略。3在这种情况下,变量直接是FormGroup类型的对象。控件不在模板内,但绑定到模板。这样更容易从其他位置访问
好吧,如果ngForm有一个表单组在里面,那么我们可以告诉ngForm更完整?不完全是。只是不同的方式有相同的结果。模板驱动保持你的值在模板上,你将需要直接在模板内操作它,或者有一点更多的工作要在你的TS中操作它,例如使用事件(例如,如何使用模板驱动与React式表单在表单中创建自定义验证)。FormGroup将直接为您提供从TS的所有访问权限,您可以在转到模板之前控制它,或者从另一个代码访问它,而不必从DOM(. getElementById ....)获取值。
那么在我看来,这是一个关于你的需求、你的策略和你所采用的良好实践的问题。但基本上,它们是为了给你同样的结果而创造的。