代码之家  ›  专栏  ›  技术社区  ›  Anji

角材料步进器每次点击时动态添加新的步进项目

  •  3
  • Anji  · 技术社区  · 7 年前

    我在我的项目中使用角材料。我想在每次单击时添加额外的步进项目(mat step) addItem 按钮。

    我在这里创造了一个劫掠者。 https://stackblitz.com/edit/angular-enmq1z?file=app%2Fstepper-overview-example.ts

    有人能帮我吗?

    事先谢谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Prashant Pimpale Dila Gurung    7 年前

    我会用 FormArray 随着 FormGroup

    HTML:

    <button mat-raised-button (click)="addItem()">
      add item
    </button>
     <form [formGroup]="formGroup">
      <mat-horizontal-stepper  formArrayName="form">
        <mat-step [formGroupName]="i" *ngFor="let customerGroup of formGroup.controls.form.controls; let i = index">
          <ng-template matStepLabel>Step {{i + 1}}</ng-template>
          <mat-form-field>
            <input matInput placeholder="Address" formControlName="cont" required>
          </mat-form-field>
        <div>
          <button mat-button matStepperPrevious>Back</button>
          <button mat-button matStepperNext>Next</button>
        </div>
        </mat-step>
      </mat-horizontal-stepper>
    </form>
    

    TS代码:

    import {Component, OnInit} from '@angular/core';
    import {FormBuilder, FormControl,FormGroup, Validators,FormArray} from '@angular/forms';
    
    /**
     * @title Stepper overview
     */
    @Component({
      selector: 'stepper-overview-example',
      templateUrl: 'stepper-overview-example.html',
      styleUrls: ['stepper-overview-example.css'],
    })
    export class StepperOverviewExample implements OnInit {
      isLinear = false;
      formGroup : FormGroup;
      form: FormArray;
      constructor(private _formBuilder: FormBuilder) {    
      }
    
      ngOnInit() {
        this.formGroup = this._formBuilder.group({
          form : this._formBuilder.array([this.init()])
        }) 
        this.addItem();
      }
    
      init(){
        return this._formBuilder.group({
          cont :new FormControl('', [Validators.required]),
        })
      }
    
      addItem(){
        this.form = this.formGroup.get('form') as FormArray;
        this.form.push(this.init());
      }
    }
    

    Stackblitz