仅在条件为真时启用按钮

问题描述 投票:0回答:1

我试图仅在将一定范围的值输入到单独的输入中时使按钮可用,但是即使满足正确的条件,该按钮也保持禁用状态。

想法是阻止用户单击按钮,以防他在输入中输入了不正确的数据并直接进入按钮-在这种情况下,不会提示他应该校正乘客人数。

HTML:

  <input type="number" id="passengers" [(ngModel)]="numberOfPassengers" (change)="checkValue()"> 
  <a routerLink="/summary"> <button [disabled]="checkButton()" (click)="saving()">To summary</button></a>

COMPONENT.TS

 ngOnInit() {
   this.buttonDisabled = true
  }

          public numberOfPassengers: number;
          public errorMessage: string = "";
          public errorMessageSubmit: string = ""
          public buttonDisabled: boolean;

      checkButton() {
        if (this.numberOfPassengers <= 0 && this.numberOfPassengers > 9) {
          return true;
        } else {
          return false;
        }
      }

      checkValue() {
        if (this.numberOfPassengers <= 0) {
          this.errorMessage = "Choose at least 1 passenger";
          return (this.numberOfPassengers = 1);
        } else if (this.numberOfPassengers > 9) {
          this.errorMessage = "Maximum of 9 passengers is allowed";
          return (this.numberOfPassengers = 9);
        }
      }

我在做什么错?感谢您的任何建议!

angular typescript button disabled-input
1个回答
0
投票

条件应该是OR,而不是AND。

checkButton() {
  if (this.numberOfPassengers <= 0 || this.numberOfPassengers > 9) {
    return true;
  } else {
    return false;
  }
}

但是您不需要此功能。您可以直接签入模板

<a routerLink="/summary"> <button [disabled]="numberOfPassengers <= 0 || numberOfPassengers > 9" (click)="saving()">To summary</button></a>
© www.soinside.com 2019 - 2024. All rights reserved.