Я создал директиву атрибутов для процентного поля, чтобы можно было обрабатывать десятичные числа. Я хочу отключить добавление десятичных знаков в поле ввода. Оно работает. Но бэкэнд добавляет ,00
к значению после размытия, и я хочу удалить ,00
, добавленный бэкэндом.
Поле ввода:
<input type="text"
#formItem
[name]="id"
[id]="id"
class="form-control"
[ngModel]="value"
(blur)="change.emit(formItem.value)"
removeDecimals="true" />
Директива:
import { Directive, ElementRef, Input, OnInit, HostListener, Renderer2 } from '@angular/core';
@Directive({
selector: '[removeDecimals]'
})
export class RemoveDecimalsDirective implements OnInit {
@Input() removeDecimals: boolean | undefined;
private _value : any;
constructor(private el: ElementRef, private renderer2: Renderer2) {
}
ngOnInit() {
}
@HostListener('input') onChange() {
if(this.removeDecimals) {
const { value } = this.el.nativeElement;
this.renderer2.setProperty(this.el.nativeElement, 'value', value.replace(/[^0-9]/g, ''));
}
}
}
Итак, попытался добавить что-то подобное в директиву, чтобы удалить, 00 из представления, но это не сработало.
@HostListener('blur') onBlur() {
let formatValue = this.el.nativeElement.value;
const index = formatValue.indexOf(',');
if (index > -1) {
formatValue = this.el.nativeElement.value.slice(0, index);
}
this.renderer2.setProperty(this.el.nativeElement, 'value', formatValue);
}
Итак, когда я ввожу значение в поля ввода , невозможно добавить десятичные дроби, только числа, которые являются правильными. Но когда я выхожу из поля, он добавляет ,00
из бэкэнда.
Как удалить ,00
, который добавляется из бэкэнда после размытия в поле ввода?