diff --git a/docs/en/UI/Angular/List-Service.md b/docs/en/UI/Angular/List-Service.md
index fc3697bd35..5301222ca1 100644
--- a/docs/en/UI/Angular/List-Service.md
+++ b/docs/en/UI/Angular/List-Service.md
@@ -201,3 +201,38 @@ You may use observables in combination with [AsyncPipe](https://angular.io/guide
```
+ABP doesn't have a built-in filtering mechanism. You need to implement yourself and handle `filter` property in backend as seen in below.
+
+```cs
+public class BookRequestDto : PagedAndSortedResultRequestDto
+{
+ public string Filter { get; set; }
+}
+```
+```cs
+public interface IBookAppService :
+ ICrudAppService< //Defines CRUD methods
+ BookDto, //Used to show books
+ Guid, //Primary key of the book entity
+ BookRequestDto, //Used for paging/sorting
+ CreateUpdateBookDto> //Used to create/update a book
+{
+
+}
+```
+```cs
+//Override GetListAsync in BookAppService
+
+public override async Task> GetListAsync(BookRequestDto input)
+{
+ var query=await ReadOnlyRepository.GetQueryableAsync();
+ query.WhereIf(!string.IsNullOrEmpty(input.Filter),x=>x.Name.Contains(input.Filter));
+
+ var totalCount = await AsyncExecuter.CountAsync(query);
+ var items = await AsyncExecuter.ToListAsync(query);
+ var entities = ObjectMapper.Map, List>(items);
+
+ return new PagedResultDto(totalCount,entities);
+}
+
+```
\ No newline at end of file