Detectar un evento de clic en un ícono dentro de un campo de entrada en Angular.
He añadido un ion-icon con enlace dentro de un input
<ion-input (ionChange)="inputChanged($event)" [type]="inputType">
<ion-button fill="clear" (click)="togglePassword($event)">
<ion-icon [name]="isPasswordHidden ? 'eye-outline' : 'eye-off-outline'"> </ion-icon>
</ion-button>
</ion-input>
El problema es que el evento de clic en el icono solo se detecta cuando el input de texto no está en foco, una vez que el input está en foco y clicas en el icono, no se desencadena ningún evento de clic después de eso. ¿Cómo puedo detectar el evento de clic en el icono incluso cuando el input está en foco?
davy.ai
Una posible solución es agregar el método
stopPropagation()
al evento(click)
del icono, lo cual evita que el evento se propague hasta el input y active su propio evento(click)
. Aquí está el código modificado:Otra posible solución es envolver el icono dentro de su propio
ion-button
con un evento(click)
separado. Aquí está el código modificado:De esta manera, el primer
ion-button
con el icono solo se encarga de mostrar el icono, mientras que el segundoion-button
con el evento(click)
se encarga de alternar la visibilidad de la contraseña.