DEV Community

John Peters
John Peters

Posted on Edited on

Material III in 20 Minutes (Adding Search)

In the previous articles we have the Material Table up and running, bound to a JSON file, and styled in a nice way. Today we want to add Search function.

<div appGrid columns=".1fr .7fr">
  <label>Search</label>
  <input type="text">
</div> 
Enter fullscreen mode Exit fullscreen mode

We start off with a div. It uses our appGrid directive which sets the style to display:grid and sets the width of the label to .1fr; and the input width of .7fr.

The Search Box

Alt Text

Next we want to capture keyup events and use a filter to change the view of the table.

<div appGrid columns=".1fr .7fr">
  <label>Search</label>
  <input #search (keyup)='onSearchKeyUp(search)' type="text">
</div> 
Enter fullscreen mode Exit fullscreen mode

We give the input a name and tell it to call onSearchKeyUp when the user types. It sends in the actual input element to the event handler.

  onSearchKeyUp(search){
    var currentFilter = search.value;
    this.dataSource.filter = currentFilter;
  }
Enter fullscreen mode Exit fullscreen mode

That's all you need to add a Search filter. As you type; the grid is filtered, and returns to 'normal state' by removing the text from the search. If you add a button named "Clear" or "Reset" this is the code to clear the filter.

  onClearClicked(){
    this.dataSource.filter = "";
  }
Enter fullscreen mode Exit fullscreen mode

As you can see the response is excellent!

Alt Text

Next up: Sortable column headers

JWP2020

Top comments (0)