Angular:添加更多按钮

时间:2018-01-18 13:07:20

标签: angular angular2-forms

我有一张表格。有一个添加更多按钮每次我点击添加更多,我将一个类的新实例推送到一个数组。我还有一个删除行功能,负责从数组中删除添加的项目。 然后我在数组上有一个ngFor循环,它可以正常工作,但如果我添加3行然后尝试删除第一行然后单击添加更多按钮,那么第二行和第三行的数据将变为空,但它们仍然存在于他们的模型中。 (ngModel

<form  #manageEmailsForm="ngForm" name="manageEmailsForm">
    <div class="row" *ngFor="let item of partners;let x = index">
        {{item.email|json}}
        {{j}}
        <div class="col-md-4">
            <mat-input-container>
                <input matInput
                       placeholder="email"
                       [name]="'piEmail'+x"

                       #piEmail="ngModel"
                       [(ngModel)]="item.email" >
                <mat-error
                        *ngIf="piEmail.errors && !piEmail.errors['required'] && piEmail.errors['email']">
                    {{"system-user.piemail format is incorrect"|translate}}
                </mat-error>
            </mat-input-container>


        </div>
        <div class="col-md-2">
            <button mat-icon-button (click)="deletePartner(x)">
                <mat-icon>delete</mat-icon>
            </button>
        </div>
    </div>
</form>

我的删除和添加按钮:

    deletePartner(index) {
       this.partners.splice(index, 1);
    }
    addAnotherPartner() {
      this.partners.push(new Partner());
    }

1 个答案:

答案 0 :(得分:0)

这可能是意外行为,因为您的表单默认情况下您的按钮是提交类型。

<form> </form>内声明哪些按钮并非意图提交时 确保它们被声明为按钮,否则使用提交事件如行为

进行处理

在示例中

<button mat-icon-button type="button" (click)="deletePartner(x)">
    <mat-icon>delete</mat-icon>
  </button>

如果你想测试这个理论,不做任何改变,只需在你的表单中添加一个onSubmit()函数

<form  #manageEmailsForm="ngForm" 
       name="manageEmailsForm" 
       (ngSubmit)="onSubmit(manageEmailsForm)">