Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular ngForm和FormControl之间的差异_Angular_Typescript_Ionic2 - Fatal编程技术网

Angular ngForm和FormControl之间的差异

Angular ngForm和FormControl之间的差异,angular,typescript,ionic2,Angular,Typescript,Ionic2,我正在Angular 4上使用表单,我不知道使用NgForm和FormGroup处理错误和输入验证程序有什么区别。处理表单有什么大的区别吗?如果我读对了,你会遇到模板驱动表单和反应式表单之间的区别 模板驱动的表单与听起来一样;模板驱动。大部分(如果不是全部的话)逻辑都在模板中。模板驱动的表单非常适合于不涉及很多复杂逻辑的简单表单 被动表单通过在模型中定义表单逻辑,采用不同的方法。反应式表单通常更高级一点,并允许在功能和灵活性方面进行大量定制。我的评论非常笼统。有关更多详细信息,请检查来自vs模板

我正在Angular 4上使用表单,我不知道使用
NgForm
FormGroup
处理错误和输入验证程序有什么区别。处理表单有什么大的区别吗?

如果我读对了,你会遇到模板驱动表单和反应式表单之间的区别

模板驱动的表单与听起来一样;模板驱动。大部分(如果不是全部的话)逻辑都在模板中。模板驱动的表单非常适合于不涉及很多复杂逻辑的简单表单


被动表单通过在模型中定义表单逻辑,采用不同的方法。反应式表单通常更高级一点,并允许在功能和灵活性方面进行大量定制。

我的评论非常笼统。有关更多详细信息,请检查来自vs模板驱动表单的被动响应。这也是一个策略、同步性、测试需求和良好实践的问题(请参见此处示例:)

ngForm=模板驱动=异步=更难测试=模板内部的控制=某种旧的编码方式=其中有一个FormGroup类型键(“表单”键)

FormGroup=反应式表单=同步=代码中的控件并绑定到模板:因为这样更容易测试=更现代的编码方式=是FormGroup类型的直接对象

一般来说,它们的作用是相同的,但是直接在模板内部使用ngForm时,您使用的是模板驱动的策略。在本例中,元素结果是一个具有FormGroup类型键(键“form”)的对象。然后ngForm内部有一个FormGroup控件位于模板中。要访问另一个位置的元素,需要访问DOM的元素或使用事件传递元素。 另一方面,在JS/TS中使用变量=FormGroup并在模板中绑定该变量,则使用了被动表单策略。在这种情况下,变量直接是FormGroup类型的对象控件不在模板内,但绑定到它。然后从另一个地方更容易进入

好吧,如果ngForm里面有一个FormGroup,那么我们就可以说ngForm更完整了?不完全是。只是不同的方法有相同的结果。模板驱动将您的值保留在模板上,您将需要直接在模板内对其进行操作,或者在TS中进行更多的操作,例如使用事件(例如,如何使用模板驱动与反应式表单在表单中创建自定义验证)。相反,FormGroup将直接为您提供从TS的所有访问权限,您可以在转到模板之前对其进行控制,或者从其他代码访问它,而无需从DOM(.getElementById…)获取值

那么在我看来,这是一个关于你的需求、你的策略和你正在采用的良好实践的问题。但基本上,它们是为了给你同样的结果