【问题标题】:Access value of formControl from formArray in reactive form in HTML在 HTML 中以反应形式从 formArray 访问 formControl 的值
【发布时间】:2020-08-19 10:17:06
【问题描述】:

如何在 HTML 中访问 ItemName 的值。当我在下面的代码中尝试{{invoiceForm.controls[i].items.controls.itemName.value | json}} 时,它显示未定义。

<form [formGroup]="invoiceForm">

<div formArrayName="items" *ngFor="let item of items.controls; let i=index;">

  <div [formGroupName]="i">
      <input type="text" formControlName="itemName">
      <input type="number" formControlName="itemQty">       
      <input type="number" formControlName="itemPrice">
  </div>  

  Item name:  {{invoiceForm.controls[i].items.controls.itemName.value | json}}

</div>
</form>

【问题讨论】:

    标签: javascript html angular angular-reactive-forms


    【解决方案1】:

    你快到了……

    代替:

    {{invoiceForm.controls[i].items.controls.itemName.value | json}}
    

    你应该写:

    {{invoiceForm.controls['items'].controls[i].controls.itemName.value | json}}
    

    StackBlitz 示例


    为了告诉确切的路径,您可以在ngOnInit 上打印带有console.log(this.invoiceForm) 的表单值,然后您可以看到'item''controls' 的直接键,您的唯一的错误是引用invoiceForm.controls[0] 这是错误的。

    这里有一点额外的实现相同的结果形式 ts 文件(硬编码到第一项):

    console.log(this.invoiceForm);
    const itemControls = <FormArray>this.invoiceForm.controls['items'];
    const itemFormGroup = <FormGroup>itemControls.controls[0];
    console.log(itemFormGroup.controls["itemName"].value);
    

    【讨论】:

    • 它的显示值,但在可视化编辑器中显示为错误。
    • 未定义标识符“控件”。 “AbstractControl”不包含这样的成员。这是错误。
    • stackblitz.com/edit/angular-ivy-kzkxwu 我在这里尝试过同样的方法,但出现此错误。你能检查一下缺少什么
    • 到底是什么问题?
    • {{invoiceForm.controls['items'].controls[i].controls.itemName.value | json}} 我已经用我的表单尝试过这个,但它会抛出错误:“AbstractControl”类型上不存在属性“控件”。 stackblitz.com/edit/angular-ivy-kzkxwu
    猜你喜欢
    • 2017-06-03
    • 2019-02-01
    • 2021-09-16
    • 1970-01-01
    • 2019-10-30
    • 2018-06-05
    • 2019-07-07
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多