Ich habe eine div
, die ich auf Fokus/Unschärfe eines input
zeigen/ausblenden möchte. Hier ist eine vereinfachte Version von dem, was ich versuche:Angular2 roll-my-own-Drop-down ausblenden, wenn Sie wegklicken?
<input (focus)="ShowDropDown=true;" (blur)="ShowDropDown=false;" />
<div *ngIf="ShowDropDown">
<ul>
<li (click)="...">...</li>
<li (click)="...">...</li>
<li (click)="...">...</li>
</ul>
</div>
Diese div
enthält eine Liste von Elementen zu klicken. Mein Problem ist, dass die input
's Blur vor dem li
Klick passiert.
Ich möchte die Dinge einfach halten. Ich möchte nicht alles Fokus oder Click-Ereignis setzen, um ShowDropDown=false
einzustellen, aber ich muss die Dropdown-div offen für die Interaktion halten.
Ich könnte ShowDropDown
eine Zahl sein, wo Fokussierung fügt 1 hinzu, mousing über das Div fügt eine weitere 1 hinzu, verwischt den Eingang subtrahiert 1, und mausern aus dem Div subtrahiert 1, aber ich stelle mir vor, dass könnte ausgehen sehr einfach synchronisieren.
Gibt es einen einfacheren Weg, dies zu tun? Kann ich die Unschärfe zum Ausführen nach dem Klick erzwingen?
Meine Klickereignisse in den li-Elementen laufen überhaupt nicht oder ich würde keine Arbeit benötigen. Die Unschärfe tritt zuerst auf, setzt ShowDropDown auf false, das div ist verborgen, der Klick registriert sich auf dem Element hinter dem div. –