platanus / ng2-rut

Angular 2 library with several components to handle Chilean RUT validation, cleaning and formatting.
MIT License
29 stars 26 forks source link

Directiva formatRut no funciona con ion-input #19

Closed bay122 closed 5 years ago

bay122 commented 5 years ago

realice la instalación del plugin en Ionic3 y probé el formatRut en un ion-input

`

RUT
<ion-input formControlName="rut" type="text" formatRut></ion-input>

`

Pero esta directiva es ignorada, y no realiza ninguna acción.

llekn commented 5 years ago

Hola @bay122 .

Eso pasa porque la versión actual de ng2-rut está limitada a sólo a elementos <input>. Este PR https://github.com/platanus/ng2-rut/pull/12 debería solucionarlo ; vamos a ponerle carbón a la máquina para sacarlo dentro de esta semana

llekn commented 5 years ago

Hola @bay122 . Acabamos de publicar la versión 0.3.0 que debería corregir esto.

Ideal si nos confirmas que te quedó funcionando!

bay122 commented 5 years ago

Luego de actualizar el plugin, comenzó a arrojarme un error en compilación con el mensaje "Cannot find module 'ng2-rut'." Probé instalarlo en otro proyecto, y tuve el mismo problema. Revisando más en detalle, me di cuenta que la node_modules/ng2-rut existe, pero dentro no está la carpeta dist (ni ninguna otra carpeta en realidad). Ésto tanto en el proyecto donde actualicé el plugin, como en el proyecto donde lo instale por primera vez. Puede que no lo esté instalando correctamente? utilicé el comando npm install ng2-rut --save

llekn commented 5 years ago

@bay122 mmm efectivamente, algo se rompió en el build automático y al instalar el paquete desde npm no viene ningún archivo con código. 😢

Estoy viendo qué pasó, avisaré apenas tenga novedades

llekn commented 5 years ago

Hola @bay122 .

Acabamos de publicar la versión 0.3.2 con el build solucionado. Ojalá me puedas confirmar que te funciona.

Gracias!

llekn commented 5 years ago

Hola @bay122 !

¿Pudiste probar la versión 0.3.2? Nos encantaría confirmar que el issue fue resuelto.

Gracias

llekn commented 5 years ago

Cerrado por no actividad. En caso de haber más info, encantado de reabrirlo

manuelabarca commented 5 years ago

Creo que el punto es que en ionic no esta blur sino que (ionBlur), yo tuve que hacer otro formateador para el caso de las app con ionic. Ahora esto probado con ionic 3, nose si ahora con ionic 4 servira de golpe, Saludos.

Faqo commented 5 years ago

@manuelabarca Como hiciste el formateador para usarlo con ionBlur? te logro funcionar la directiva validateRut? Estoy trabajando en ionic 3 y aun no me funciona ninguna de las directivas, estoy usando form control. Gracias de antemano

manuelabarca commented 5 years ago

@Faqo tuve que hacer una funcion javascript para formatear, trate de adaptar esta libreria en ionic pero no me funciono y tampoco he tratado mas, si quieres te comparto la funcion

Faqo commented 5 years ago

@manuelabarca seria de utilidad :+1:

manuelabarca commented 5 years ago

@manuelabarca seria de utilidad 👍

<ion-input type="text" formControlName="rut" placeholder="RUT" (ionBlur)="formatRut()"></ion-input>

formatRut(){
        var rut = this.registerForm.get('rut').value;
        if ( /^[0-9]*$/.test(rut)) {
            rut = this.clean(rut)

            var result = rut.slice(-4, -1) + '-' + rut.substr(rut.length - 1)
            for (var i = 4; i < rut.length; i += 3) {
              result = rut.slice(-3 - i, -i) + '.' + result
            }
            this.registerForm.controls['rut'].setValue(result);
        } else {
            this.registerForm.controls['rut'].setValue(rut);
        }
    }
    clean (rut) {
        return typeof rut === 'string'
          ? rut.replace(/^0+|[^0-9kK]+/g, '').toUpperCase()
          : ''
    }

Esto es lo que yo hago, si logro adaptar esta libreria para ionic 3, te aviso

Faqo commented 5 years ago

@manuelabarca seria de utilidad +1

<ion-input type="text" formControlName="rut" placeholder="RUT" (ionBlur)="formatRut()"></ion-input>

formatRut(){
        var rut = this.registerForm.get('rut').value;
        if ( /^[0-9]*$/.test(rut)) {
            rut = this.clean(rut)

            var result = rut.slice(-4, -1) + '-' + rut.substr(rut.length - 1)
            for (var i = 4; i < rut.length; i += 3) {
              result = rut.slice(-3 - i, -i) + '.' + result
            }
            this.registerForm.controls['rut'].setValue(result);
        } else {
            this.registerForm.controls['rut'].setValue(rut);
        }
    }
    clean (rut) {
        return typeof rut === 'string'
          ? rut.replace(/^0+|[^0-9kK]+/g, '').toUpperCase()
          : ''
    }

Esto es lo que yo hago, si logro adaptar esta libreria para ionic 3, te aviso

Al final logre usarlo de una forma quizas ineficiente, usando un objeto auxiliar y guardando con ngmodel el rut, ahi me tomo el formato y la validación dentro del form tambien, Gracias de todas formas.