Kunal Dholiya
Kunal Dholiya

Reputation: 385

How to reset ng-select in angular

I want to reset ng-select when I click on clear button my code is as below:

<ng-select (change)="setFilter('','')" 
           [items]="eventType"
           bindLabel="name"
           bindValue="id"
           placeholder="Select Event Type"
           [(ngModel)]="event_type" id="eventType">
</ng-select>
<button class="acq-btn acq-btn-default"(click)="clearFilter()">Clear</button>

Function which I've created is as below:

eventType = [
    {id: 'create', name: 'Create'},
    {id: 'update', name: 'Update'},
    {id: 'delete', name: 'Delete'},
];

clearFilter(){
    this.event_type = '';
    this.setFilter('','');
}

Using select I'm filtering the data. Filtering is working fine. Clear button is also fine just the UI is showing cross sign like below:

enter image description here

Can you help me in this issue?

Upvotes: 4

Views: 11997

Answers (2)

StepUp
StepUp

Reputation: 38199

As you are using two way binding [(ngModel)]:

<ng-select 
           (change)="setFilter('','')" 
           [items]="eventType"
           bindLabel="name"
           bindValue="id"
           placeholder="Select Event Type"
           [(ngModel)]="event_type" 
           id="eventType">
</ng-select>

In your component it is necessary to add empty value and set [(ngModel)] to your desired value in clearFilter() method:

event_type: any;

eventType = [
    {id: 'empty', name: ''},
    {id: 'create', name: 'Create'},
    {id: 'update', name: 'Update'},
    {id: 'delete', name: 'Delete'},
];

clearFilter(){
    this.event_type = this.eventType[0];
}

Upvotes: 3

Alon Yampolski
Alon Yampolski

Reputation: 849

If, in example, you can set your drop-down to default 'create', you can do it like this:

eventType = [
    {id: 'create', name: 'Create'},
    {id: 'update', name: 'Update'},
    {id: 'delete', name: 'Delete'},
];

clearFilter(){
    this.event_type = 'create';
    this.setFilter('','');
}

Alternatively you can give a blank option:

eventType = [
    {id: '', name: ''},
    {id: 'create', name: 'Create'},
    {id: 'update', name: 'Update'},
    {id: 'delete', name: 'Delete'},
];

clearFilter(){
    this.event_type = '';
    this.setFilter('','');
}

Upvotes: 2

Related Questions