Sometimes, we want to apply filters to Angular *ngFor.
In this article, we’ll look at how to apply filters to Angular *ngFor.
How to apply filters to Angular *ngFor?
To apply filters to Angular *ngFor, we can apply a filter with the |.
For instance, we write
this.filterArgs = { title: "bar" };
this.items = [{ title: "foo" }, { title: "bar" }, { title: "baz" }];
in our component code.
Then in the template, we write
<li *ngFor="let item of items | myFilter: filterArgs ">
...
</li>
to apply the myFilter filter.
Then we create the myFilter filter by writing
import { Pipe, PipeTransform } from "@angular/core";
@Pipe({
name: "myFilter",
pure: false,
})
export class MyFilterPipe implements PipeTransform {
transform(items: any[], filter: Object): any {
if (!items || !filter) {
return items;
}
return items.filter((item) => item.title.includes(filter.title) );
}
}
to create the MyFilterPipe class that we name as myFilter.
Then we add the transform method in the class.
We return the filtered results that we get after calling filter.
Now the myFilter filter will render the filtered results in the template.
Conclusion
To apply filters to Angular *ngFor, we can apply a filter with the |.