Как разрешить ctrl-c / p / v / z работать с использованием десятичной директивы в angular8 - PullRequest
0 голосов
/ 11 марта 2020

Привет, я использовал директиву, где в ней должно быть разрешено использовать все элементы управления копированием и вставкой, такие как ctrl- c, ctrl-v, ctrl-p, ctrl-z. Но здесь это не оставляет пользователя делать все эти события. Может ли кто-нибудь помочь мне сделать это разрешить.

DEMO: DEMO

HTML:

<input type="textbox" [(ngModel)]="InputValue" placeholder="XX.XX" appTwoDigitDecimaNumber>

TS:

import { Directive, ElementRef, HostListener } from '@angular/core';

@Directive({
  selector: '[appTwoDigitDecimaNumber]'
})
export class TwoDigitDecimaNumberDirective {
  // Allow decimal numbers and negative values
  private regex: RegExp = new RegExp(/^\d*\.?\d{0,2}$/g);
  // Allow key codes for special events. Reflect :
  // Backspace, tab, end, home
  private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', '-', 'ArrowLeft', 'ArrowRight', 'Del', 'Delete'];

  constructor(private el: ElementRef) {
  }
  @HostListener('keydown', ['$event'])
  onKeyDown(event: KeyboardEvent) {
    console.log(this.el.nativeElement.value);
    // Allow Backspace, tab, end, and home keys
    if (this.specialKeys.indexOf(event.key) !== -1) {
      return;
    }
    let current: string = this.el.nativeElement.value;
    const position = this.el.nativeElement.selectionStart;
    const next: string = [current.slice(0, position), event.key == 'Decimal' ? '.' : event.key, current.slice(position)].join('');
    if (next && !String(next).match(this.regex)) {
      event.preventDefault();
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...