только десятичное число и не допускайте использования другого языка в Angular

#angular #angular-directive #angular-forms #angular-validation

#угловой #угловая директива #угловые формы #угловая проверка

Вопрос:

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

 @Directive({  selector: '[numeric]' })  export class NumericDirective {   @Input('decimals') decimals: number = 0;   private check(value: string, decimals: number) {  if (decimals lt;= 0) {  return String(value).match(new RegExp(/^d $/));  } else {  var regExpString = "^\s*((\d (\.\d{0,"   decimals   "})?)|((\d*(\.\d{1,"   decimals    "}))))\s*$"  return String(value).match(new RegExp(regExpString));  }  }   private specialKeys = [  'Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight', 'Delete'  ];   constructor(private el: ElementRef) {  }   @HostListener('keydown', ['$event'])  onKeyDown(event: KeyboardEvent) {  if (this.specialKeys.indexOf(event.key) !== -1) {  return;  }    // Do not use event.keycode this is deprecated.  // See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode  const 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 amp;amp; !this.check(next, this.decimals)) {  event.preventDefault();  }  }  }