Как написать собственный канал для фильтрации значения, если длина вводимого текста больше 2 символов
У меня есть эта функция, где я буду отображать значения массива, если значение, введенное в поле ввода больше 1, оно будет сравнивать и отображать значение. Как я могу переписать это в пользовательском фильтре.
users: searchInputModel[] = [
{
name: 'Jack Daniel',
code: 'AD1213'
},
{
name: 'John Doe',
code: 'TFQUN'
}
];
constructor() {
this.userControl.valueChanges.subscribe((user) => {
if (user && user.length > 1) {
this.filteredUsers = user ? this.filterUsers(user) : this.users.slice();
}
});
}
filterUsers(value: string): searchInputModel[] {
const filterValue = value.toLowerCase();
return this.users.filter(user => user.name.toLowerCase().indexOf(filterValue) === 0);
}
1 ответ
Ты можешь попробовать:
this.userControl.valueChanges.pipe(
filter(user => user && user.length > 1),
map(e => this.filterUsers(e))
).subscribe(filteredUsers => this.filteredUsers = filteredUsers);