Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

149
Vistas
Creación de un método reutilizable adjunto al campo de entrada para múltiples componentes en Angular

Soy principiante en angular y comencé a trabajar en el proyecto angular 12. Estoy trabajando en formularios reactivos en los que estoy agregando el método Blur para agregar clase a mi campo de entrada en algunas condiciones de error para dar estilo a los campos de entrada.

Puedo hacerlo, pero ahora tengo entre 12 y 15 componentes con formularios. Quiero utilizar la misma funcionalidad en todos los componentes. ¿Hay alguna manera de que pueda hacer esto sin repetir el código en el archivo ts para el método onblur? A continuación se muestra mi código.

 <form [formGroup]="changePasswordForm" (ngSubmit)="submitForm()"> <div class="form-group" [ngClass]="f.oldPassword.invalid && ((f.oldPassword.dirty || f.oldPassword.touched))?'has-error':''"> <label>Old Password<span class="error-red">*</span></label> <input type="password" class="form-control input-type2" formControlName="oldPassword" (blur)="onBlur($event)"> <div class="error error-msg"> <div *ngIf="f.oldPassword.errors?.required"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> Old password is required. </div> </div> </div> </form>

componente.ts

 onBlur(e: any) { if (e.target.className && e.target.className.indexOf('ng-invalid') > 0) { e.target.className = e.target.className.replace('has-success', ''); } else { e.target.className = e.target.className + ' has-success'; } }

Estoy escribiendo la misma pieza de código en todos los componentes del formulario para hacer mi trabajo. Sé que una forma de lidiar con lo anterior es crear un servicio y escribirlo allí. Pero investigué un poco y descubrí que podemos crear directivas para tales cosas. Pero no estoy seguro de cómo hacerlo. Cualquier ayuda será apreciada. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede usar una directiva en la input

 @Directive({ selector: "[errorStyling]" }) export class ErrorStylingDirective { constructor( private elem:ElementRef ) { } @HostListener("blur") onBlur() { // do something here } }

También puede usar @HostBinding('class.xxx') para establecer las clases actualizadas

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda