首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >(角度5)错误:找不到具有名称的表单控件:

(角度5)错误:找不到具有名称的表单控件:
EN

Stack Overflow用户
提问于 2018-09-27 04:53:31
回答 1查看 4.1K关注 0票数 1

我正在尝试编辑一个表单,当我想要显示要编辑的值时,使用setValue时,我得到一个错误"ERROR Error: Cannot find form control with name: purchases“。

component.ts

代码语言:javascript
复制
ngOnInit() {
  this.form = new FormGroup({
      customer: new FormGroup({
        name: new FormControl(),
        lastname: new FormControl(),
        address: new FormControl(),
        phone: new FormControl()
      }),
      createdAt: new FormControl(),
      purchases: new FormArray([])
  });
}

我的函数来编辑

代码语言:javascript
复制
onEdit(invoice) {    
  this.form.setValue(invoice)   
}

component.html

代码语言:javascript
复制
<div class="col-md-8">
    <div formGroupName="customer">
      <h3>Customer</h3>
      <label>Name: <input class="form-control" type="text" formControlName="name"> </label>
      <label>Last Name:<input class="form-control" type="text" formControlName="lastname"></label>
      <label>Phone:<input class="form-control" type="text" formControlName="phone"></label>
      <label>Address:<input class="form-control" type="text" formControlName="address"></label>
   </div>
   <div><li formArrayName="purchases"></li></div>
</div>

控制台中的值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 06:13:24

该错误是由调用setValue()引起的,因为它执行严格的检查。

您正在尝试将多个项的数组分配给在索引0处只有一个初始FormGroup的FormArray。

在索引%1处赋值失败,因为它不存在。

解决这个问题的步骤:

  1. 定义表单数组:采购:新FormArray( {FormGroup:新FormGroup({ categoryS:新FormControl(''),位置:新FormControl(''),名称:新FormControl(''),价格:新FormControl('') }),数量:

FormControl('') }) )

  1. Use patchValue
  2. 清除表单数组:

while (purchasesFormArray.length) { purchasesFormArray.removeAt(0);}

  • 在循环中填充窗体数组

Invoice.purchases.forEach(购买=> { purchasesFormArray.push(this._fb.group(purchase));});

修复代码如下:View in StackBlitz

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52525893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档