Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable button click if input field is empty using angular 4

Tags:

angular

I have a search box and a search button. I need to disable button until user provides the search term, but the button gets disable always. I have following the code:

 <input type='text' [(ngModel)]='listFilter' />
 <button [disabled]="!listFilter" class="btn btn-primary"(click)='OnSearch(listFilter)'>
      Search
 </button>

What's wrong here? I'm using angular 4

like image 611
jvm Avatar asked May 19 '17 11:05

jvm


2 Answers

Add name property inside the input tag.

 <input type='text' [(ngModel)]='listFilter' name="listFilter"/>
            <button [disabled]="!listFilter" class="btn btn-primary" (click)='OnSearch(listFilter)'>Search</button>
like image 63
Anas Avatar answered Nov 18 '22 07:11

Anas


You must use a template reference variable!

To do this, you can use either ref-prefix or #prefix. In your example, you will have to modify it like this:

<input ref-filter type='text' [(ngModel)]='listFilter' />
<button [disabled]="!filter.value" class="btn btn-primary" (click)='OnSearch(listFilter)'>
 Search 
</button>

A model reference variable (#varRef) is not the same as a model input variable (variable let), as you might see in a * ngFor. The scope of a reference variable is the entire model. Do not set the same variable name more than once in the same model. The execution value will be unpredictable.

  • More documentation here : https://angular.io/guide/template-syntax
like image 5
Neo_Ryu Avatar answered Nov 18 '22 07:11

Neo_Ryu