【问题标题】:Dynamically adding form fields to reactive forms in Angular 8在 Angular 8 中动态地将表单字段添加到反应式表单中
【发布时间】:2019-10-18 18:42:33
【问题描述】:

我在从数组中填充表单字段时遇到了一些问题。我最初的想法是将数组从单个组件输入到将处理表单的单个组件。而不是制作多个表格。但我似乎无法让它工作。任何帮助,将不胜感激!我浏览过 Google/stack/medium,似乎找不到任何东西。我在 plunkr 上做了一个例子。

https://stackblitz.com/edit/angular-t7hcq6

在ts文件中:

  public demoForm: FormGroup;
  public arrayItems: data = [];

  private formFields = ["Sku", "Title"];

  constructor(private _formBuilder: FormBuilder) {
    this.demoForm = this._formBuilder.group({
      demoArray: this._formBuilder.array([])
    });
  }

  ngOnInit() {
    this.formFields.map(field => {
      this.arrayItems.push({ title: field });
      this.demoArray.push(this._formBuilder.control(''));
    });
  }

  get demoArray() {
    return this.demoForm.get("demoArray") as FormArray;
  }

在模板中:

<form [formGroup]="demoForm">
   <div formArrayName="demoArray" 
      *ngFor="let arrayItem of arrayItems; let i=index">
      <input type="checkbox"[formControl]="demoArray[i]">
      <label>{{arrayItem.title}}</label>
   </div>
</form>

谢谢你们。

【问题讨论】:

  • 在您的问题上提供一些代码以帮助我们回答通常是个好主意。你在用FormArray吗?
  • 对不起@WillAlexander 这是我第一次为 Stack 做贡献,我不知道。该问题现在已经解决,但在下面。感谢您抽出宝贵时间。

标签: angular typescript angular8 angular-reactive-forms dynamic-forms


【解决方案1】:

像这样改变你的模板:

<form [formGroup]="demoForm">
   <div formArrayName="demoArray" 
      *ngFor="let arrayItem of arrayItems; let i=index">
      <input type="checkbox" [formControlName]="i"> <!-- this line -->
      <label>{{arrayItem.title}}</label>
   </div>
</form>

【讨论】:

  • 非常感谢您在这方面的帮助。感谢您的支持!
  • 如何使用这个例子添加一个新的复选框?
  • @RafaelGuimarães this.demoArray.push(this._formBuilder.control(/* your new control stuff */));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 2020-05-13
  • 2015-02-14
  • 1970-01-01
  • 2017-10-07
相关资源
最近更新 更多