【问题标题】:how to close popover on click of anywhere on the doccument单击文档上的任何位置时如何关闭弹出窗口
【发布时间】:2018-04-06 05:26:28
【问题描述】:

我有一个popover,我想在click 的任何地方关闭document

这是我的演示: https://stackblitz.com/edit/ionic-3bw7da?file=pages%2Fhome%2Fhome.html

现在它没有关闭,因为我不知道如何关闭它。

这是我的演示:https://stackblitz.com/edit/ionic-3bw7da?file=pages%2Fhome%2Fhome.html

请帮我提前谢谢!!!

【问题讨论】:

  • 导入PopoverOptions并使用create(component, data,{enableBackdropDismiss: true, showBackdrop:true})

标签: angular typescript ionic-framework ionic3


【解决方案1】:

我没有成功在评论中格式化我的代码:/

import { Component, ElementRef } from '@angular/core';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html',
  host:{'(document:click)': 'onClick($event)',
}
})

export class HomePage {

    constructor(public navCtrl: NavController, private element: ElementRef) {

  }

  onClick(event) {
   // display event in console if outside of menu top bar
   if (this.element.nativeElement.contains(event.target)) {
     console.log(event);
     this.closeMenu();    
   } else {
    this.openMenu();    
   }

  openMenu() {
    this.showMoreBarItem = !this.showMoreBarItem;      
  }

  closeMenu() {
    if(this.showMoreBarItem) {
      this.showMoreBarItem = !this.showMoreBarItem;      
    }
  }}

重要提示:您必须分离您的菜单组件来完成它,并且只在您的菜单组件中应用我的更改 => 在您的情况下,例如在 home.html 中创建一个新组件!

【讨论】:

  • 我试过了,但是不行,请在这里试试 stackblitz.com/edit/ionic-3bw7da?embed=1&file=pages/home/…
  • 你完成了吗?如果您只想减少对 3 个项目符号图标的点击,而不是完整的顶部菜单,请告诉我。如果是这样,请更改菜单的行为(减少初始状态的宽度以减少点击区域)并在点击时增加它(下拉菜单)
【解决方案2】:

我回答了一个类似的问题,你必须为你的组件添加一个监听器,这要归功于 host 属性。在本例中,在名为“element”的构造函数中注入 ElementRef。

构造函数(私有元素:ElementRef)

@Component({
     selector..., 
     host: {'(document:click)': 'onClick($event)',}
});


onClick(event) {
if (!this.element.nativeElement.contains(event.target)) {
      closeModal(); // or not
    }
}

我在这里回答了这个问题:Angular, resume event propagation

【讨论】:

  • 如果您回答了类似的问题,我建议您将其更新为评论。
  • @Westi-Tech,它不适合我可以做一个演示
  • 已保存(我必须连接 Github)stackblitz.com/edit/ionic-uu8jkf 我为您创建了菜单组件,您必须在其中管理与菜单相关的每个事件。您必须尽可能多地分离组件。
  • @Westi-Tech,这个stackblitz.com/edit/ionic-uu8jkf?file=pages%2Fhome%2Fhome.ts 结果是准确的,但我没有看到添加了任何代码,请帮助我您添加了哪些代码
  • 再次检查,我现在可以在 pages/home 中看到您有一个名为 menu 的新目录;)我已经创建了它并将其添加到您的应用程序模块中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 2020-07-26
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多