อัปเดต
ฉันสงสัย. ทำไมคุณไม่ต้องการใช้การ[disabled]ผูกแอตทริบิวต์ที่ Angular 2 ให้มา? เป็นวิธีที่ถูกต้องในการรับมือกับสถานการณ์นี้ ฉันขอเสนอให้คุณย้ายisValidเช็คของคุณด้วยวิธีส่วนประกอบ
<button [disabled]="! isValid" (click)="onConfirm()">Confirm</button>
ปัญหาเกี่ยวกับสิ่งที่คุณพยายามอธิบายไว้ด้านล่าง
โดยทั่วไปคุณสามารถใช้ngClassที่นี่ได้ แต่การเพิ่มคลาสจะไม่ จำกัด เหตุการณ์ไม่ให้เริ่มทำงาน สำหรับการเริ่มต้นเหตุการณ์ด้วยอินพุตที่ถูกต้องคุณควรเปลี่ยนclickรหัสเหตุการณ์เป็นด้านล่าง ดังนั้นonConfirmจะถูกยิงเมื่อฟิลด์ถูกต้องเท่านั้น
<button [ngClass]="{disabled : !isValid}" (click)="isValid && onConfirm()">Confirm</button>
สาธิตที่นี่