Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

153
Visualizações
El evento de clic no se activa cuando el campo de entrada está activo

Tengo un proyecto Angular con una configuración similar a esta:

 <input type="text" [(ngModel)]="search" > <app-item-list [items]="foundItems" (itemClick)="onItemSelected($event)"> </app-item-list>

Hay un campo de entrada en el que el usuario escribe. A medida que escribe, el componente item-list elementos se llena con los resultados.

En el componente de la lista de elementos, simplemente muestra todos los elementos pasados y, si se hace clic en uno, se activa el evento itemClick

Siempre que la entrada permanezca activa, el usuario debe hacer clic dos veces en un elemento para que se active el evento de clic. Hacer clic en cualquier otro lugar (para anular la selección del campo de entrada) y luego hacer clic en un elemento también funciona.

Se supone que esto es una especie de 'cuadro desplegable' de búsqueda, donde al escribir se muestra una lista de opciones similares a las de autocompletar obtenidas de otro lugar. Funciona bien aparte de tener que hacer clic dos veces. El primer clic solo activa un evento ngModelChange y el segundo activa el evento itemClick .

Actualizar:

Aparentemente, esto tiene algo que ver con la estructura del componente app-iutem-list . Esta es una mirada al interior:

 <button (click)="clickLog(1)"></button> <ul> <li *ngFor="let item of items; let i = index" (click)="onItemClicked(i)"> <button (click)="clickLog(2)"></button> <b class="title">{{ item.title }}</b> <div class="subtitle">{{ item.subtitle }}</div> </li> </ul>

He agregado 2 botones que simplemente escriben en la consola. El botón n.° 1 funciona incluso si la entrada aún está activa, el botón n.° 2 no.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

click es un evento DOM, no relacionado con el ngModel de nivel superior. El evento adecuado para esto es ngModelChange

 <input type="text" [(ngModel)]="search" > <app-item-list [items]="foundItems" (ngModelChange)="onItemSelected($event)"> </app-item-list>

about 4 years ago · Juan Pablo Isaza Relatório

0

Esto terminó siendo un problema con la actualización de los elementos de la lista en el momento exacto del primer clic.

Al hacer clic en uno de los elementos, ngModel activaría un evento de cambio, que alteraría la lista de elementos. La nueva lista de elementos se pasaría al componente item-list elementos, donde eliminaría/actualizaría la lista completa y perdería el evento de clic.

Agregar un trackBy a *ngFor para evitar actualizaciones innecesarias solucionó el problema.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda