0

在我的应用程序中,我最初禁用了一个按钮。如果输入字段已填充,则按钮已启用,但有一个奇怪的行为。如果禁用,则该图标被禁止并且不可点击(这显然是正确的)。在输入字段中的数字上,按钮更改类并启用,但图标不会更改,尽管可以单击按钮(这很奇怪)。如果我单击输入字段,图标会发生变化并且手形图标可见而不是禁止信号。预期的行为是在输入字段中的数字上立即显示手形图标,这是我的代码:

<button (click)='onClick()' [disabled]="isDisabled" [class]="checkValid()" type="submit">Search</button>

checkValid() {
   if (this.myInput != "") {
            this.isDisabled= false;
            return "btn btn-primary";
        } else {
            this.isDisabled= true;
            return "btn btn-primary disabled";
        }
    }

有什么建议吗?

4

1 回答 1

2

这是您的应用程序的解决方案:

最好使用 [ngClass] 而不是仅使用 [class]。并尽量避免在 HTML 中返回状态,因为您的方法将循环工作。

我添加了 ngClass 语句并在输入字段中添加了 (keyup)='checkValid()' 。

@Component({
  selector: 'my-app',
  template: `
    <input type="text" [(ngModel)]="myInput" (keyup)='checkValid()'>
    <button (click)='onClick()' [disabled]="isDisabled" class='btn btn-primary' [ngClass]="{'disabled': isDisabled}" type="submit">Search</button>
  `,
})
export class App {
  isDisabled: boolean = true;
  myInput: string = '';

  constructor() {
  }

  checkValid() {
   if (this.myInput != "") this.isDisabled= false;
   else this.isDisabled= true;
  }

  onClick(){

  }
}

木板:

https://plnkr.co/edit/nWQiCy2ZVuZTPSVCBr4y?p=preview

于 2018-03-14T17:38:17.917 回答