Я пытался реализовать директиву Angular 5+, которая ограничивает пользователя вводом только чисел с плавающей запятой / целых чисел.
Ниже приведена реализация с использованием маски ввода , котораяЯ получил от stackoverflow, но он не работает должным образом, так как он позволяет пользователю вводить два десятичных знака, что неправильно. Ссылка
import {Directive, ElementRef, Input} from '@angular/core';
import * as Inputmask from 'inputmask';
@Directive({
selector: '[app-restrict-input]',
})
export class RestrictInputDirective {
// map of some of the regex strings I'm using (TODO: add your own)
private regexMap = {
integer: '^[0-9]*$',
float: '^[+-]?([0-9]*[.])?[0-9]+$',
words: '([A-z]*\\s)*',
point25: '^\-?[0-9]*(?:\\.25|\\.50|\\.75|)$'
};
constructor(private el: ElementRef) {}
@Input('app-restrict-input')
public set defineInputType(type: string) {
Inputmask({regex: this.regexMap[type], placeholder: ''})
.mask(this.el.nativeElement);
}
}
Я пытался реализовать это в течение недели, но безрезультатно.Любая помощь будет оценена!