Cập nhật
Tôi tự hỏi. Tại sao bạn không muốn sử dụng [disabled]ràng buộc thuộc tính do Angular 2 cung cấp? Đó là cách chính xác để giải quyết tình huống này. Tôi đề nghị bạn chuyển isValidséc của mình qua phương pháp thành phần.
<button [disabled]="! isValid" (click)="onConfirm()">Confirm</button>
Sự cố với những gì bạn đã thử được giải thích bên dưới
Về cơ bản bạn có thể sử dụng ngClassở đây. Nhưng việc thêm lớp sẽ không hạn chế sự kiện kích hoạt. Để kích hoạt sự kiện trên đầu vào hợp lệ, bạn nên thay đổi clickmã sự kiện thành bên dưới. Vì vậy, điều đó onConfirmsẽ chỉ được kích hoạt khi trường hợp lệ.
<button [ngClass]="{disabled : !isValid}" (click)="isValid && onConfirm()">Confirm</button>
Demo tại đây