Atualizar
Estou pensando. Por que você não quer usar a [disabled]
associação de atributos fornecida pelo Angular 2? É a maneira correta de lidar com essa situação. Proponho que você mova seu isValid
cheque por meio do método de componente.
<button [disabled]="! isValid" (click)="onConfirm()">Confirm</button>
O problema com o que você tentou explicado abaixo
Basicamente, você pode usar ngClass
aqui. Mas adicionar classe não restringiria o evento de disparar. Para disparar o evento em uma entrada válida, você deve alterar o click
código do evento abaixo. Portanto, isso onConfirm
será acionado apenas quando o campo for válido.
<button [ngClass]="{disabled : !isValid}" (click)="isValid && onConfirm()">Confirm</button>
Demonstração aqui