Как ограничить угловой числовой ввод до N десятичных знаков? - PullRequest
1 голос
/ 06 ноября 2019

Ввод не должен принимать число с числом знаков больше N. N определяется как Ввод.

Например, если N = 3 и пользователь хочет ввести 123.3456. Ему должно быть разрешено только ввести 123.345.

Я хотел бы добиться чего-то вроде этого:

<input type="number" [(ngModel)]="value" nDecimalsInput [decimals]="2">

Через директиву или что-то еще ...

Ответы [ 3 ]

0 голосов
/ 06 ноября 2019

Вы можете сделать простую функцию для (keydown) = "maxLength ()"

maxLength() {
if (N && this.myFormControl.value.toString().split('.')[1].length === N) {
      return false;
    }
}
0 голосов
/ 06 ноября 2019

Таким образом, вы можете сделать так, чтобы переопределить или подключить событие (например, изменить или набрать ключ):

parseFloat($(this).val()).toFixed(3)

Или использовать маску типа: https://github.com/assisrafael/angular-input-masks и сделать

<input type="text" name="field" ng-model="number" ui-number-mask="3">
0 голосов
/ 06 ноября 2019

Подойдет маска ввода. Вы можете попробовать lib из npm или создать директиву самостоятельно.

В вашем случае библиотека используется следующим образом:

<input type="number" [(ngModel)]="value" mask="0*.00">
...