Как написать собственный канал для фильтрации значения, если длина вводимого текста больше 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);
Другие вопросы по тегам