Hacer que el texto de entrada aceptar numérico por ciento sólo Angular

0

Pregunta

Decisiones de entrada de texto solo acepte por ciento de los valores puede ser un poco complicado, aquí es una forma de hacerlo que mediante la eliminación de los no valores numéricos y la adición de ' %' en la final.

siéntase libre de compartir sus ideas!

angular html regex typescript
2021-11-23 18:18:38
1

Mejor respuesta

0

con el fin de hacer que el texto de entrada acepta números en coma flotante y agregar "%" al final:

  • en el archivo html:
<input id="id" type="text" formControlName="percentControl" (focusin)="start($event)"(focusout)="end($event)" />
  • en .archivo ts:
  end(e) { 
    // console.log(/^[0-9.]*$/.test(e.target.value));
    if(!/^[0-9.]*$/.test(e.target.value))
        e.target.value = e.target.value.replaceAll(/[^0-9.]/g, '').trim();
   //add ' %' at the end
    if(e.target.value.length)
        e.target.value = e.target.value+ ' %';
    //this part is needed when working with angular form validation (ngForm required 
    //or formGroup Validators.required), else null value won't trigger the validation
    else 
        e.target.value = '0 %';
  }
  start(e) {
    e.target.value = e.target.value.replace('%', '').trim();
  }
  • el trato con la transferencia de datos a y desde el back-end:
  1. La publicación de los datos:
 //make sure to get rid from ' %' when posting data to the backend
 //example with formControl
 // the + is for converting string to number
 dataToPost = +this.form.get('percentControl').value.replaceAll('%', '');

  1. Obtención de datos:
 //Use Angular percent pipe
 local: string = "en-US";
 percentPipe:PercentPipe = new PercentPipe(this.local);
 myVariable = this.percentPipe.transform(dataFromBackEnd/100);

2021-11-23 18:18:38

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................