当我想 select 0 时禁用离子范围

ion-range disabled when I want to select 0

我有一个离子范围,用户可以在其中 select 一个介于 0 和 10 之间的值。我想要求用户 select 一个值,然后再进一步使用 [disabled] 我希望用户能够给出 0 到 10 之间的值。但是由于我要求用户 select 某些东西,所以 select 0 是不可能的。事实上,值默认为 0,因此当用户移动它(移动到 1 或更多)时,按钮变为活动状态,但如果他回到 0,则无法发送结果。

  <div *ngFor="let q of questions">
  <h2>{{q.text}}</h2>
  <ion-item >
      <ion-range min='0' max='10' pin="true" [(ngModel)]="q.answer" >
          <ion-label slot="start">0</ion-label>
          <ion-label slot="end">10</ion-label>
      </ion-range>
    </ion-item>
      <ion-button [disabled]='(q.required && !q.answer)' (click)="getAnswer()">Submit</ion-button>
  </div> 

.ts 文件:

  questions = [
    {
      id: 1,
      text : 'test',
      required: true,
      answer: ''
    }
  ];

  getAnswer() {
    console.log(this.questions);
  }

所以 Submit 被禁用,如果我移动它,它会变为活动状态,但如果我回到 0,它会再次禁用...我希望用户能够 select 0 但至少迫使他采取行动...

TD;DR/预期行为

最初 ion-range 的默认值设置为 0submit 按钮设置为 disabled。如果用户手动设置 select 值,我想启用 submit 按钮。即使用户手动将 ion-range 的值设置为 0.

使用标志来确定用户是否触摸了离子范围。像这样设置一个 ionFocus 事件 -

  <div *ngFor="let q of questions">
  <h2>{{q.text}}</h2>
  <ion-item >
      <ion-range min='0' max='10' pin="true" [(ngModel)]="q.answer" (ionFocus)="onTouch()">
          <ion-label slot="start">0</ion-label>
          <ion-label slot="end">10</ion-label>
      </ion-range>
    </ion-item>
      <ion-button [disabled]='(q.required && !q.answer && !wasTouched)' (click)="getAnswer()">Submit</ion-button>
  </div> 

并且在打字稿文件中 -

...
export class DemoPage {

  ...
  wasTouched = false;

  ...
  touched() {
    this.wasTouched = true;
  }
}