Для достижения ожидаемого результата используйте следующие параметры: keyup
событие
- При каждом нажатии клавиши значение ввода увеличивается на '.'
- Первая часть массива разбиения будет иметь значение до десятичной точки, а вторая часть массива будет иметь значение после десятичной точки
- Переназначить входное значение на основе длины
component.html
<input type="text" (keyup)="onKeyup($event)" />
component.ts
onKeyup(e) {
const val = e.target.value.split(".");
if (!val[1]) {
e.target.value =
val[0].split("").length > 2
? e.target.value.substr(0, e.target.value.length - 1)
: e.target.value;
} else {
e.target.value =
val[1].split("").length > 2
? val[0] + "." + val[1].substr(0, val[1].length - 1)
: e.target.value;
}
}
пример рабочего кода для справки - https://codesandbox.io/s/angular-p1gh1
Обновленокод с HTML и javascript
codepen - https://codepen.io/nagasai/pen/xoLqdN?editors=1010
function onKeyup(e) {
const val = e.target.value.split(".");
if (!val[1]) {
e.target.value =
val[0].split("").length > 2
? e.target.value.substr(0, e.target.value.length - 1)
: e.target.value;
} else {
e.target.value =
val[1].split("").length > 2
? val[0] + "." + val[1].substr(0, val[1].length - 1)
: e.target.value;
}
}
<input type="text" onkeyup ="onKeyup(event)"/>