Если я хорошо понял ваше объяснение, вы используете Angular, вы можете назначить переменную и изменить ее в соответствии с вашими ограничениями или случаями.
Например,
disableButton: boolean;
.
.
.
constructor(){
this.disableButton = false;
}
updateDisableButton(){
if(/*case1**/)
this.disableButton = true;
else if
...
}
в вашем html
<button [disabled]="disableButton"></button>