Задать вопрос

Как в реактивных формах Angular предотвратить ввод определённых символов?

Подскажите пример, как реализовать для определённых полей ввод, например только цифр, кириллических символов, либо ограничить по количеству, или только по определённому регулярному выражению.
Валидаторы определяют уже имеющуюся ошибку, а мне нужно как-то предотвратить ввод, если для поля только, скажем 4 символа нужно либо же иное правило.
Я уже думал через декораторы проверку делать и если не проходит, то отклонять, и библиотеки смотрел, но реализовать задуманное пока что не удалось.
Как сделать банальное ограничение ввода символов?
  • Вопрос задан
  • 651 просмотр
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Jeer
@Jeer
уверенный пользователь
Можешь на событие keyDown повесить функцию, внутри которой просто результат к цифрам кастишь или другую нужную тебе логику делаешь. Либо еще посмотри события (input) или что-то про change text
Ответ написан
Комментировать
@dcooder
import {Directive, HostListener, Input} from '@angular/core';

@Directive({
  selector: 'input[appInputDenySymbols]'
})
export class InputDenySymbolsDirective {

  @Input() appInputDenySymbols: string;

  @HostListener('keydown', ['$event']) onKeyDown(event) {
    if (this.appInputDenySymbols.indexOf(event.key) !== -1) {
      event.preventDefault();
    }
  }

}


Потом эту директиву юзаешь так:

<input appInputDenySymbols='1234567890' >
чтобы запретить ввод цифр. Можно сделать по такому же принципу на регуляроное выражение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект