根据选中的选择框动态添加删除和获取选择框和文本框的数据

GOPI R

我想根据更改选项动态添加选择框和输入框,需要保存日期![在此处输入图像描述][

阿杰梅拉

好吧,您可以使用FormArray来动态地将FormGroups添加到您的反应式表单中。

我还看到您FormControl在选择每个组中的 API 选择列表时动态添加s。您可以使用 上的addControl方法FormGroup来实现这一点。

以下是在组件类中实现它的方法:

import { Component } from '@angular/core';
import { FormGroup, FormBuilder, FormArray } from '@angular/forms';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  filterTypes = [
    'TypeOne',
    'TypeTwo'
  ];

  apiTypes = [
    'Less Than',
    'Equals',
    'Greater Than'
  ];

  dynamicForm: FormGroup;

  constructor(private fb: FormBuilder) {}

  ngOnInit() {
    this.dynamicForm = this.fb.group({
      filters: this.fb.array([])
    });
    // this.addFilterToFiltersFormArray();
  }

  createFilterGroup() {
    return this.fb.group({
      filterType: [],
      apiType: []
    });
  }

  addFilterToFiltersFormArray() {
    this.filtersFormArray.push(this.createFilterGroup());
  }

  removeFilterFromFiltersFormArray(index) {
    this.filtersFormArray.removeAt(index);
  }

  selectedAPIChanged(value, i) {
    this.getFilterGroupAtIndex(i).addControl('value', this.getFormControl());
  }

  getFormControl() {
    return this.fb.control(null);
  }

  save() {
    console.log(this.dynamicForm.value);
  }

  get filtersFormArray() {
    return (<FormArray>this.dynamicForm.get('filters'));
  }

  getFilterGroupAtIndex(index) {
    return (<FormGroup>this.filtersFormArray.at(index));
  }

}

在您的组件模板中:

<form [formGroup]="dynamicForm">
  <div formArrayName="filters">
    <div 
      *ngFor="let filter of filtersFormArray.controls; let i = index;">

      <div 
        [formGroupName]="i" 
        class="container">

        <mat-form-field>
          <mat-select 
            placeholder="Select Filter"
            formControlName="filterType">
            <mat-option 
              *ngFor="let filterType of filterTypes" 
              [value]="filterType">
              {{ filterType }}
            </mat-option>
          </mat-select>
        </mat-form-field>

        <mat-form-field>
          <mat-select 
            (selectionChange)="selectedAPIChanged($event.value, i)"
            placeholder="Select API"
            #apiField
            formControlName="apiType">
            <mat-option 
              *ngFor="let apiType of apiTypes"
              [value]="apiType">
              {{ apiType }}
            </mat-option>
          </mat-select>
        </mat-form-field>

        <mat-form-field 
          *ngIf="filter.get('value')">
          <input 
            matInput 
            formControlName="value" 
            [placeholder]="apiField.value">
        </mat-form-field>

        <mat-icon 
          (click)="removeFilterFromFiltersFormArray(i)">
          delete
        </mat-icon>

      </div>
    </div>

    <button 
      mat-raised-button 
      color="primary" 
      type="button" 
      (click)="addFilterToFiltersFormArray()">
      Add Filter
    </button>

    <button 
      class="save" 
      mat-stroked-button 
      color="primary" 
      [disabled]="dynamicForm.invalid || filtersFormArray.controls.length < 1"
      (click)="save()">
      Save
    </button>

  </div>
</form>

这是供您参考工作示例 StackBlitz


更新:这是在 Medium关于这个答案完整报道。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态删除文本框

来自分类Dev

根据下拉列表和特定的文本框(取决于选择)访问字符串变量

来自分类Dev

如何删除动态添加的文本框?

来自分类Dev

选择上的“清除文本框”和“删除”按钮出现在“选择”上

来自分类Dev

动态添加文本框和文本区域

来自分类Dev

如何在带有项目选择和文本框的GridView中添加DropDownList

来自分类Dev

根据下拉选择,自动填充文本框(Laravel和Javascript帮助!)

来自分类Dev

如何根据下拉选择填充强类型文本框

来自分类Dev

在多选中的每个选择上显示文本框

来自分类Dev

选择文本框之前的标签文本

来自分类Dev

PHP:检查选择值和文本框!= NULL

来自分类Dev

动态添加时删除标记为按钮的文本框

来自分类Dev

jQuery在文本框中添加/删除多个选择框选项

来自分类Dev

获取jquery中动态添加的选择框和文本框的值

来自分类Dev

WPF-如何根据组合框选择获取文本框值

来自分类Dev

动态添加和填充选择框

来自分类Dev

如何根据下拉列表选择填充多个文本框?

来自分类Dev

动态选择框如何从我的文本框值向选择框动态添加选项

来自分类Dev

根据int值选择一个文本框

来自分类Dev

根据选择选项值动态更改文本框值

来自分类Dev

如何根据数据库中的下拉选择更改文本框值

来自分类Dev

在 div 选择上链接 div 和文本框值

来自分类Dev

aspx获取动态添加的文本框的值

来自分类Dev

如何根据excel中用户窗体上的组合框选择添加标签和文本框

来自分类Dev

如何从文本框输入中选择和删除整个文本?

来自分类Dev

选择下拉列表时在文本框中获取值

来自分类Dev

如何使用angularjs根据下拉列表中的选择添加新文本框?

来自分类Dev

选择框动态添加和删除

来自分类Dev

动态获取新添加的文本框值

Related 相关文章

  1. 1

    动态删除文本框

  2. 2

    根据下拉列表和特定的文本框(取决于选择)访问字符串变量

  3. 3

    如何删除动态添加的文本框?

  4. 4

    选择上的“清除文本框”和“删除”按钮出现在“选择”上

  5. 5

    动态添加文本框和文本区域

  6. 6

    如何在带有项目选择和文本框的GridView中添加DropDownList

  7. 7

    根据下拉选择,自动填充文本框(Laravel和Javascript帮助!)

  8. 8

    如何根据下拉选择填充强类型文本框

  9. 9

    在多选中的每个选择上显示文本框

  10. 10

    选择文本框之前的标签文本

  11. 11

    PHP:检查选择值和文本框!= NULL

  12. 12

    动态添加时删除标记为按钮的文本框

  13. 13

    jQuery在文本框中添加/删除多个选择框选项

  14. 14

    获取jquery中动态添加的选择框和文本框的值

  15. 15

    WPF-如何根据组合框选择获取文本框值

  16. 16

    动态添加和填充选择框

  17. 17

    如何根据下拉列表选择填充多个文本框?

  18. 18

    动态选择框如何从我的文本框值向选择框动态添加选项

  19. 19

    根据int值选择一个文本框

  20. 20

    根据选择选项值动态更改文本框值

  21. 21

    如何根据数据库中的下拉选择更改文本框值

  22. 22

    在 div 选择上链接 div 和文本框值

  23. 23

    aspx获取动态添加的文本框的值

  24. 24

    如何根据excel中用户窗体上的组合框选择添加标签和文本框

  25. 25

    如何从文本框输入中选择和删除整个文本?

  26. 26

    选择下拉列表时在文本框中获取值

  27. 27

    如何使用angularjs根据下拉列表中的选择添加新文本框?

  28. 28

    选择框动态添加和删除

  29. 29

    动态获取新添加的文本框值

热门标签

归档