错误错误:无法找到带有路径的控件:Angular FormArray

问题描述

我正在使用 branch-name = "!git rev-parse --abbrev-ref HEAD" pub = "!f(){ git push -u origin HEAD^:$(git branch-name); };f" 进行匿名 formArray 输入(自动完成)以查找项目。

添加自动完成后,自动完成输入不起作用,尽管它独立工作正常。

错误信息是 autocomplete

你能帮我改进代码吗?

谢谢。

 ERROR Error: Cannot find control with path: 'orderItems -> 0 -> search'
 <form [formGroup]="orderForm">
    <div formArrayName="orderItems">
      <div *ngFor="let orderItem of getControls(); let i = index" [formGroupName]='i'>
        <p-autoComplete
        formControlName="search"
        (onSelect)="onSelect($event)"
        [suggestions]="list">
        </p-autoComplete>
      </div>
    </div>
    <p-button (click)="onAdd()"> add </p-button>
</form>

解决方法

最初使用空数组设置表单

buildForm() {
    this.orderForm = this.fb.group({
      orderItems: this.fb.array([]),});
  }

然后获取数组的数据并填充数组

setOrderItemArray() {
    const orderItemsArray = this.orderForm.get('orderItems') as FormArray;
    this.orderItemsList.forEach(item => {
      orderItemsArray.push(this.buildOrderItemsForm(item))
    });
  }

  buildOrderItemsForm(item): FormGroup {
    return this.fb.group({
      id: item.id,search: item.search,name: item.name
    })
  }

现在您在数组的每个对象中都有一个“搜索”实例,并且可以为每个对象独立使用搜索自动完成功能。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...