21
外側のクリックでドロップダウンを閉じるにはどうすればよいですか?
ユーザーがドロップダウン以外の場所をクリックしたときにログインメニューのドロップダウンを閉じたいのですが、Angular2とAngular2の "アプローチ"でそれを実行したいのですが... ソリューションを実装しましたが、自信がありません。同じ結果を達成する最も簡単な方法がなければならないと私は思います、あなたが何かアイデアがあれば...議論しましょう:)! これが私の実装です: ドロップダウンコンポーネント: これは私のドロップダウンのコンポーネントです: このコンポーネントが可視に設定されるたびに(たとえば、ユーザーがボタンをクリックしてそれを表示すると)、SubjectsService内に格納された「グローバル」なrxjsサブジェクトuserMenuにサブスクライブします。 そして、それが非表示になるたびに、この件名の購読を解除します。 このコンポーネントのテンプレート内の任意の場所をクリックするたびに、onClick()メソッドがトリガーされます。これにより、上部(およびアプリケーションコンポーネント)へのイベントバブリングが停止します。 これがコードです export class UserMenuComponent { _isVisible: boolean = false; _subscriptions: Subscription<any> = null; constructor(public subjects: SubjectsService) { } onClick(event) { event.stopPropagation(); } set isVisible(v) { if( v ){ setTimeout( () => { this._subscriptions = this.subjects.userMenu.subscribe((e) => { this.isVisible = false; }) …