【问题标题】:Angular 7 reactive forms - select position in a Form Build arrayAngular 7 反应式表单 - 在表单构建数组中选择位置
【发布时间】:2019-05-29 15:25:01
【问题描述】:

我需要为表单构建器数组选择控件中的位置。

我需要这样做:testArray.controls[0] 但出现控制台错误。

它适用于 testArray.controls。但这不允许我在表单数组中选择特定索引

组件 HTML:

   <div formArrayName="formArray">

         <div *ngFor="let item of testArray.controls[0]; let i = index" 
         [formGroupName]="i">

         </div>

    </div>

组件 TS:

  public item = {
    field: [ '', [ Validators.required ] ]
  };

  public createForm(): void 
    this.form = this.fb.group({
      formArray:  this.fb.array([ this.createItem() ]),
    });
  }

  get testArray(): FormArray {
    return this.form.get('formArray') as FormArray;
  }

  public createItem(): FormGroup {
    return this.fb.group(this.item);
  }

【问题讨论】:

    标签: angular angular-cli angular7 formbuilder angular2-formbuilder


    【解决方案1】:

    当然可以,只是不能在 within for 循环中执行此操作。当您在循环中时,您已经处于单个项目级别。

    Here 是一个演示这个想法的工作堆栈闪电战,但这个概念是这样的:

    <div [formGroup]="form">
      <div formArrayName="formArray">
        <h2> As array</h2>
        <div *ngFor="let item of testArray.controls; let i = index">
          <input formControlName="{{i}}"> Item value: {{ item.value }}
        </div>
        <div>
          <h2>Individually, get the second item</h2>
          <input [formControl]="testArray.controls[1]"> Item value: {{ item.value }}
        </div>
      </div>
    </div>
    

    【讨论】:

    • 我需要使用 formControlName 作为我使用主题系统的即时消息
    • formControlName 用于单个节点?不确定这是否可以开箱即用。让我试着弄清楚。
    • @AngularM 这不可能开箱即用。如果您查看 Angular 文档,它会明确说明 将现有 FormGroup 中的 FormControl 按名称同步到表单控件元素。(强调我的)。您可以查看 formControlName 指令的工作原理:raw.githubusercontent.com/angular/angular/8.0.0/packages/forms/…,然后尝试创建您自己的版本,但我认为这将非常繁琐。不过,我很确定有一种更简单的方法。你说你有“主题系统”。该系统需要什么才能正常工作?
    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2021-01-12
    • 2019-02-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2020-09-21
    • 2019-06-24
    相关资源
    最近更新 更多