Как предотвратить Dеfault () в действии ввода HostListener - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь написать директиву, ограничивающую пользователя вводом только числовых символов в элемент управления вводом текста.

@Directive({
  selector: '[numericControl]'
})
export class NumericControlDirective {

    contructor(
        private el: ElementRef,
    ) {}

    @HostListener('input', ['$event'])
    onInput(e: any) {
        if (e.which < 48 || e.which > 57) {
            e.preventDefault();
        }
    }

}

Использование

<input type="text" placeholder="Volume" numericControl />

Но это не работает, кто-нибудь сталкивался с этой проблемой?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы также можете использовать

@HostListener('keydown', ['$event']) onKeyDown(event) {
    let e = <KeyboardEvent>event;
    if (e.which < 48 || e.which > 57) {
        e.preventDefault();
    }
}
0 голосов
/ 25 апреля 2018

Использовать тип события клавиатуры - keydown или keypress:

@HostListener('keydown', ['$event'])
onInput(e: any) {
  if (e.which < 48 || e.which > 57) {
      e.preventDefault();
  }
}
...