首页 > 解决方案 > Angular - 当并非所有字段都来自用户输入时提交表单

问题描述

我刚刚了解了 Angular 表单,并且我设法从教程中创建了一个登录表单和一个注册表单,而且这些都非常简单。但是现在我想制作一个表单,用户不需要输入所有字段(表格条目),而且我对此很陌生,我什至不知道这是否可能。

例如,假设我构建了一个社交媒体应用程序,用户登录然后发布某种类型的帖子。自然地,帖子将进入与用户表不同的数据库表中,该表将存储帖子的内容,以及发布者。那么,如果我可以从用户在表单中输入的内容中获取帖子的内容,我如何在提交表单之前访问有关用户的信息?还是可以在之后“添加”它?

标签: angulartypescriptfrontend

解决方案


一切皆有可能,尤其是这实际上是相当普遍的做法。

回答您的问题:在用户发布他通常已经登录的内容时。在整个应用程序范围内使用服务时,用户的信息在填写表格时可用。

  • 您可以使用某些(或全部)字段的初始化函数使用数据初始化表单。
  • 您可以在进行实际 http 调用时填写请求中的数据(这是更好的选择)。

向对象添加更多值非常容易:

{ ...this.formData, ...this.additionalData }

更多提示:

  • 您可能希望在 onInit() 方法中使用对后端服务的请求来填充某些表单(如编辑表单)。
  • 您可以制作相当简单的模板驱动表单,但如果您想制作更复杂、动态和可测试的表单,您可能需要研究“反应式表单”。
  • 如果您只想在 typescript 代码中更改表单中的某些值,则可以在表单上使用 .patchValue() 而不是 .setValue(),这需要所有表单字段。
  • 我可以在表格上推荐 Deborah Kurata 的课程。

我很高兴解决您可能遇到的任何更具体的问题。玩得开心学习角度,创建良好且用户友好的表单是一项很好的技能。


推荐阅读