【问题标题】:Angular 2/4 : Reactive forms are synchronous while template-driven forms are asynchronous, How?Angular 2/4:响应式表单是同步的,而模板驱动的表单是异步的,如何?
【发布时间】:2023-03-09 03:24:01
【问题描述】:

我正在浏览 angular.io (Reactive forms are synchronous) 的文档,试图了解响应式表单(它们是如何同步的,而模板驱动的表单是异步的)。

但是文档对 example 没有足够的解释。谁能帮我理解模板驱动的表单是异步的,而反应式表单是同步的?

我尝试在互联网上浏览了很多博客,但没有得到答案。

感谢任何帮助。

【问题讨论】:

  • 检查我的答案。我已经添加了参考
  • 更新了我的答案,希望能帮助你理解,基本上你用模板驱动写的指令会有所不同

标签: angular angular-reactive-forms angular4-forms


【解决方案1】:

在同一文档中仔细阅读这一行:

反应式表单是同步的(当您从代码创建控件时) 在反应式表单中,您可以在代码中创建整个表单控件树。您可以立即更新值或向下钻取父表单的后代,因为所有控件始终可用。

模板驱动的表单是异步的(因为它委托创建控件的任务) 模板驱动的表单将其表单控件的创建委托给指令。为了避免“检查后更改”错误,这些指令需要一个以上的周期来构建整个控制树。这意味着在从组件类中操作任何控件之前,您必须等待一个滴答声。


在模板驱动中编写 [NgModel] 或 [NgForm](指令),它们将负责在 html 中的网页上创建控件,这就是它变得异步的方式。

如果你附加了钩子 ngAfterViewInit 生命周期钩子,你会很容易发现它们之间的区别,

在响应式表单中,您可以控制模板驱动的位置。

【讨论】:

  • 你能举例说明一下吗
  • @shreyansh - 在模板中由您编写 [NgModel] 或 [NgForm] 来完成在 html 网页上创建控件的任务,这就是它变成异步的方式,
  • pranay - 感谢您的回答,但我想了解“您可以立即更新值或向下钻取父表单的后代,因为所有控件始终可用”和“为了避免在检查错误后更改”,这就是为什么我要求用一些例子来解释,或者互联网上存在任何可以清楚解释差异的博客(链接)。
  • @shreyansh - 这里:blog.angularindepth.com/…
猜你喜欢
  • 2017-01-30
  • 2016-04-26
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 2017-06-27
  • 2018-04-09
相关资源
最近更新 更多