【问题标题】:Getting unique formcontrol values for duplicated formfields angular获取重复表单字段的唯一表单控件值
【发布时间】:2020-12-05 03:18:03
【问题描述】:

简介

我有一个reactiveform。它包含两个名为 namevalue 的表单字段。所以我有一个复制表单的 add 按钮。因此,如果我单击它,表单字段 namevalue 会重复。因此,我尝试使用下面名为 value 的表单字段的相应输入。我将它分配给(我的意思是 html 中的那个)formvalues 在表单字段下方。因此,当我在第一个表单中输入 value 表单字段的输入(比如说 1)时,下面的 formvalues 变量会更新为输入的输入(1)。所以现在如果我复制表单并在该 value 表单字段中输入另一个输入(比如说 2)。现在 formvalues 获得额外的价值 1,2。

我的问题

在每组 reactiveforms 中,我实时都有一个 popup 按钮。所以在那个 popup 中出现了特定 value 表单域的输入。因此,如果我在值表单字段中复制并输入另一个输入,现在我单击该特定 form 的相应弹出窗口,则相应 value 表单字段的输入(重复一个)应该出席。但是现在发生的情况是,相应值表单字段中存在的所有值都显示为(示例:1,4,6,7)。

我不知道这里真正的问题是什么,所以如果我的问题标题具有误导性,请原谅我。如果我的解释不清楚,请在下方评论。

示例代码https://codesandbox.io/s/formarraydynamic-forked-di1js?file=/src/app/app.component.html

注意:以上代码链接的大部分内容是由用户 @VimalPatel 在 stackoverflow 中完成的。我对他在该链接中编写的代码给予了充分的评价

我无法在该沙盒代码中安装 boostrap,因此我制作了一个显示按钮而不是弹出窗口来显示我得到的值。

【问题讨论】:

  • 我没有收到您的问题。你能解释一下你分配的 SAMPLECODE 有什么问题吗?
  • 感谢您的提问。我正在复制表单域。对于每组重复的表单域,我保留一个弹出窗口,显示该特定表单域的输入(在本例中为值表单域的输入)。因此,在我的 VS 代码中,我尝试并发现当我单击弹出窗口时,所有值 formfield 的 formcontrol 值都会像 1、2、3、4 一样添加,而不是像 2 或 4 那样单独显示该特定 formfield 的值。在我的示例代码中,我试图获取该特定表单域的输入(即使有多个值表单域可能通过单击添加按钮来复制)。 @yurzui
  • 在表单下的示例代码中,有一个叫做 formvalues 的东西,它从 value 中获取所有表单字段的值。我只是想为每组表单保留一个单独的弹出按钮,以显示该特定值表单字段的输入。但是在我的 vs 代码中,我实时尝试了这个。而不是显示来自该特定表单字段的特定值,而是显示由逗号分隔的所有值组合(如示例代码中所示)1,2,3
  • 希望你能理解。请问我是否再次不清楚@yurzui
  • 请分享您到目前为止尝试过的代码。我在您的代码框中没有看到任何与上述功能相关的代码。

标签: javascript angular typescript forms angular-reactive-forms


【解决方案1】:

创建一个FormGroup 类型的变量,因为您的表单包含FormArray。它将保存当前选择的表格。在您的按钮单击中,将当前表单作为参数传递给您的 show 方法。

<button (click)="openForm(form)">Show</button>
 
openForm(form: FormGroup) {
     this.selectedFormGroup = form;
}

在您的模板中,您会像这样显示选定的表单值。

<div *ngIf="selectedFormGroup">
    {{selectedFormGroup.value | json}}
</div>

工作代码沙盒

https://codesandbox.io/s/formarraydynamic-rqdhc?file=/src/app/app.component.html

【讨论】:

  • 有没有办法单独获取值表单域的值(数字)? @Vimal
  • 您正在获取对象只需使用“this.selectedFormGroup.value.value”来获取值。
  • 成功了,谢谢。感谢您的帮助。顺便说一句,当我被卡住时,你们如何立即提出解决方案。我的意思是我知道我是一个初学者,你很有经验。但是如此强大的解决问题能力背后的思维过程是什么? @Vimal
  • 我强烈建议您在深入了解 Angular 或任何其他框架/库之前先从 javascript basic 开始。弄清楚你的基本概念,否则作为开发人员将是相当艰难的旅程。
  • 肯定会照你说的做
猜你喜欢
  • 2012-07-24
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多