Ho un div
che voglio mostrare/nascondere su messa a fuoco/sfocatura di uno input
. Ecco una versione semplificata di quello che sto cercando:Il menu a discesa di Angular2 roll-my-own si nasconde se si fa clic di distanza?
<input (focus)="ShowDropDown=true;" (blur)="ShowDropDown=false;" />
<div *ngIf="ShowDropDown">
<ul>
<li (click)="...">...</li>
<li (click)="...">...</li>
<li (click)="...">...</li>
</ul>
</div>
Questo div
contiene un elenco di elementi su cui cliccare. Il mio problema è che la sfocatura dello input
si verifica prima del clic di li
.
Voglio mantenere le cose semplici. Non voglio impostare l'attivazione di tutto o fare clic sull'evento per impostare ShowDropDown=false
ma è necessario mantenere aperto il divario per l'interazione.
Potrei avere ShowDropDown
essere un numero in cui la messa a fuoco aggiunge 1 ad esso, il mouse sul div aggiunge un altro 1 ad esso, sfocando l'input sottrae 1 e il mouse fuori dalle div sottrai 1 ma immagino che possa uscire da sincronizza davvero facilmente.
C'è un modo più semplice per farlo? Posso forzare la sfocatura a correre dopo il clic?
I miei eventi click negli elementi li non sono affatto in esecuzione o non avrei bisogno di un lavoro in giro. La sfocatura avviene prima, imposta ShowDropDown su false, il div è nascosto, i clic si registrano sull'elemento dietro il div. –