Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!