Событие keyup в директиве Ангуляр 2?

Почему не срабатывает это условие, если текст в поле input меньше заданного в limitTo:

@HostListener('keyup') ngOnChanges() {
    if(this.el.nativeElement.value.length <= this.limitTo) {
      return false
    }
  }


Здесь почему-то не срабатывает return false;

Пробовал такой вариант:

@HostListener('keyup', ['$event']) onKeyUp(event) {
    if (this.el.nativeElement.value.length + 1 <= this.limitTo) {
      e.preventDefault();
    }

    return;
  }
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
navix
@navix
Angular & TypeScript
Событие `keyup` срабатывает после изменения `value`, поэтому его сброс ничего не дает.

Если по задаче нужно запретить удаление символов, если строка короче какого-то лимита, то я бы предложил такой вариант: сохранять значение перед изменениями, а на `change` проверять валидность и если что-то не так, то откатывать значение.

`change` - потому что юзер может и мышкой его поменять, например, вырезать через контекстное меню.

Рабочая демка: https://stackblitz.com/edit/angular-85uyuj
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы