Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

enable/ disable button based on value entered in text box angular 4 - initial load not working

Tags:

angular

I need to enable / disable the below button and I have the below code. It works fine only from second time onwards. Initially when I land on the page, the button should be disabled because I dont have a value in the input box. If i enter something inside the text box and delete it , the button gets disabled. How do I disable the button for the first when I land on the page in angular 4

<input type="email" class="form-control" id="inputValue"  placeholder="[email protected]" formControlName="inputValue">
 <button type="button" id="verifyBtn" [disabled]="inputValue === ''" class="btn btn-primary btn-large" (click)="verify()">Verify</button>
like image 470
Nancy Avatar asked Oct 24 '25 22:10

Nancy


2 Answers

You can set input like this:

[disabled]="!inputValue"

Because the inputValue value is not set at the beginning, which is undefined, so when you check inputValue === '' it will be false

[Update based on comment]
If you use [(ngModel)], which is bi-directional, you need to be careful about the data input from view to controller, and output from controller to view. In many times, It is a bad design.

Because you use fromControlName, which is reactiveForm, you should just use reactiveForm and subscription to handle input value. You can check the post

like image 142
Mavlarn Avatar answered Oct 27 '25 19:10

Mavlarn


Based on you updated question you want to disable button control when you land on page , to do that you should create your form control like as below

this.heroForm = this.fb.group({
  inputValue : ['', Validators.required ],
});

if you do as above then you control will enter in invalidate state first time itself. in your button html you should do this

<form [formGroup]="heroForm">
    <button
     type="button"
     id="verifyBtn"
     formControlName="inputValue"
     [disabled]="heroForm.get('inputValue').invlaid"
     class="btn btn-primary btn-large"
     (click)="verify()">Verify</button>
  </form>

can you try like this , so code below checks inputvalue is there or not and if inputvalue is there check that its has value or not

[disabled]="!inputValue || (inputValue && inputValue.length < 1)"
like image 27
Pranay Rana Avatar answered Oct 27 '25 21:10

Pranay Rana



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!