ion-toggle 提交表单

ion-toggle submits the form

我有以下简单代码:

@Page({
    template: `
      <ion-content>
        <form (submit)="submit()">
          <ion-item>
              <ion-label>Some Toggle</ion-label>
              <ion-toggle [(ngModel)]="toggle"></ion-toggle>
          </ion-item>

          <div *ngIf="toggle">some content 1</div>
          <div *ngIf="!toggle">some content 2</div>

            <button type="submit">Submit</button>
        </form>
      </ion-content>
    `,
})
export class TestPage{

  submit(){
    console.log("form submit");
  }
}

问题是每当我点击开关时,表单都会调用提交功能。

有人能解决这个问题吗?

事实上,您在 toggle 属性 上进行了双向绑定,并且在 属性 上绑定了您的 ngIf。这意味着无需提交表单即可自动考虑其更新。

要仅在提交时考虑更新,您需要使用另一个 属性。类似的东西:

@Page({
  template: `
    <ion-content>
      <form (submit)="submit()">
        <ion-item>
            <ion-label>Some Toggle</ion-label>
            <ion-toggle [(ngModel)]="toggle"></ion-toggle>
        </ion-item>

        <div *ngIf="panelToggle">some content 1</div> <-------
        <div *ngIf="!panelToggle">some content 2</div>

        <button type="submit">Submit</button>
      </form>
    </ion-content>
    `,
})
export class TestPage{
  submit() {
    console.log("form submit");
    this.panelToggle = this.toggle; // <--------
  }
}

将提交函数调用放在提交按钮中解决了我的问题:

@Page({
    template: `
      <ion-content>
        <form>
          <ion-item>
              <ion-label>Some Toggle</ion-label>
              <ion-toggle [(ngModel)]="toggle"></ion-toggle>
          </ion-item>

          <div *ngIf="toggle">some content 1</div>
          <div *ngIf="!toggle">some content 2</div>

            <button type="submit" (click)="submit()">Submit</button>
        </form>
      </ion-content>
    `,
})
export class TestPage{

  submit(){
    console.log("form submit");
  }

}