Создание средства форматирования чисел в Angular 9 в поле ввода - PullRequest
2 голосов
/ 21 июня 2020

Здравствуйте, я пытаюсь создать средство форматирования чисел в поле ввода.

Он отлично работает, когда я набираю числа, но когда я набираю другие символы, кажется, что NgModel не заботится о моих изменениях, и как только когда я снова набираю номер, все символы non di git снова исчезают. Может ли кто-нибудь мне помочь?

требуемое поведение -> ввод: "dawdhawdhwa", вывод: "0kr"

ввод: "50000", вывод: "50 000 kr"

ввод: "5219319231", вывод: "5 219 319 231 крон"

ввод: "dawh2133kdaw5", вывод: "21 335 крон"

Исходный код:

import { Component, Input, PipeTransform, Pipe } from '@angular/core';
@Pipe({
    name: 'numberFormat'
})
export class NumberFormatPipe implements PipeTransform {
    transform(value: any, args?: string[]): any {
        if(!value) {
            value = "0";
        }
        value = value.replace(/[^0-9.]/g, "");
        return parseFloat(value as string).toLocaleString('sv') + (args ? args[0] : "");
    }
}
@Component({
  selector: 'app-input',
  template: `
  <div >
  <input
    [ngModel]="value | numberFormat: [' kr']"
    (ngModelChange)="value = $event"
    type="text"
  />
</div>
  `,
})
export class InputComponent  {
    value: string
  constructor() { 

  }
  ngOnInit(): void {
  }
}


...