首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当用户在外部单击时,如何让一个样式为工具提示的<div>从Angular应用程序中消失?

当用户在外部单击时,可以通过监听整个页面的点击事件,当点击事件发生时,判断点击的元素是否为<div>,如果不是则隐藏该<div>。具体实现方法如下:

  1. 在<div>上添加一个点击事件监听器。
  2. 在点击事件处理函数中,判断点击的元素是否为<div>。
  3. 如果点击的元素是<div>,则什么都不做,继续显示工具提示。
  4. 如果点击的元素不是<div>,则隐藏该<div>,使工具提示消失。

以下是一个示例代码(以Angular为例):

代码语言:txt
复制
import { Component, HostListener } from '@angular/core';

@Component({
  selector: 'app-tooltip',
  template: `
    <div [hidden]="!showTooltip" (click)="onClickOutside($event)">
      <!-- 工具提示内容 -->
    </div>
    <button (click)="toggleTooltip()">显示/隐藏工具提示</button>
  `,
})
export class TooltipComponent {
  showTooltip = false;

  @HostListener('document:click', ['$event'])
  onClickOutside(event: MouseEvent) {
    const clickedElement = event.target as HTMLElement;
    const tooltipElement = document.querySelector('div[app-tooltip]') as HTMLElement;

    if (tooltipElement && !tooltipElement.contains(clickedElement)) {
      this.showTooltip = false;
    }
  }

  toggleTooltip() {
    this.showTooltip = !this.showTooltip;
  }
}

在上述示例代码中,通过@HostListener装饰器监听整个页面的点击事件。当点击事件发生时,通过判断点击的元素是否在工具提示的<div>内部,决定是否隐藏工具提示。通过toggleTooltip函数来控制工具提示的显示和隐藏。

这样,当用户在外部单击时,如果点击的元素不是工具提示的<div>或工具提示的子元素,工具提示将会消失。

推荐腾讯云相关产品:腾讯云云服务器(CVM)

  • 链接地址:https://cloud.tencent.com/product/cvm
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AngularDart4.0 指南- 表单 顶

开发表单,创建一个数据录入体验非常重要,该体验可以通过工作流高效地引导用户。...Angular可不使用Bootstrap类或任何外部样式Angular应用程序可以使用任何CSS库或不使用。...valid反映了控制值有效性。 样式控件 有效控制属性是最有趣,因为一个控制值无效,你想发送一个强烈视觉信号。...有些开发人员希望仅在用户进行无效更改时显示消息。 控件是“原始隐藏消息实现了这个目标。 您向表单添加一个“清除”按钮,您会看到此选项重要性。...提交标志变为真,表格消失。 您将看到表格显示英雄模型值(只读)。 ? 该视图包含一个编辑按钮,其单击事件绑定将清除提交标志。 单击编辑按钮,该表消失,并且可编辑表单重新出现。

17.5K30

AngularDart4.0 英雄之旅-教程-04明细 顶

您进行更改时,请通过重新加载浏览器窗口来保持运行。 应用程序重构 添加新功能之前,您可以应用程序重构受益。 应用模板文件 您将对应用程序组件模板进行多次更新。...添加一个onSelect()方法,将selectedHero属性设置用户单击英雄。...刷新浏览器,该应用程序不再失败,名称列表再次显示浏览器没有选定英雄,ngIf指令DOM移除英雄详情HTML。 没有英雄细节元素或绑定担心。...在上面添加样式元数据,有一个名为selected自定义CSS类。 为了选定英雄更清晰可见,当用户点击英雄名字,你将把这个选定class应用到。...表达式falseAngular删除选定类。 ===运算符测试给定对象是否相同。 模板语法指南中阅读有关[class]绑定更多信息。

3K30
  • AngularDart4.0 指南- 模板语法二 顶

    模板表达式计算结果trueAngular会添加类。 表达式false,它将删除类。 <!...指令没有合适宿主元素如何对元素进行分组。 如何编写自己结构指令。 为什么你只能应用一个结构指令到一个元素。 本节介绍常见结构指令: NgIf:有条件地DOM添加或删除元素。...表达式false,NgIfDOM删除HeroDetailComponent,销毁该组件及其所有子组件。 Dart模式下,Dart期望布尔值(类型booltrue或false。...NgIffalseAngularDOM删除元素及其后代。 它摧毁了他们组件,潜在地释放了大量资源,从而带来了更加快速用户体验。 展示/隐藏技术适合少数几个后代元素。...不幸是,currentHero应用程序崩溃。 你可以用*ngIf来解决这个问题。 <!

    30K20

    AngularDart4.0 英雄之旅-教程-07路由 顶

    用户在任一视图中点击英雄名称,导航至所选英雄详细视图。 当用户点击电子邮件深层链接,打开特定英雄详细视图。 完成后,用户将可以像这样浏览应用程序: ?...你已经完成了应用程序路由。 您没有向模板添加英雄详情链接,因为用户单击导航链接不是为了查看特定英雄; 而是点击一个英雄名字,不管名字是显示仪表板还是英雄列表。...选择一个仪表板英雄 当用户选择仪表板英雄应用程序应该导航到HeroDetailComponent以允许用户查看和编辑选择英雄。...指令列表删除HeroDetailComponent。 删除英雄细节导入。 当用户列表中选择一个英雄,他们不会进入详细页面。...用户可以应用程序周围进行导航,仪表板到英雄详细信息,然后返回,英雄列表到英雄详细信息,再次回到英雄。 你已经达到推动这个页面的所有导航要求。 风格化应用程序应用程序是功能,但它需要样式

    17.6K30

    Angular 显示英雄列表

    CLI 生成 HeroesComponent ,它也同时 HeroesComponent 创建了空白 heroes.component.css 样式表文件,并且 @Component.styleUrls...把显示英雄详情 HTML 包裹在一个  。 并且为这个 div 添加 Angular  *ngIf 指令,把它值设置 selectedHero。...点击一个英雄,它详情就出现了。 这个应用看起来又再次工作正常显示了。 英雄显示列表,当你单击英雄名字时候,有关你单击英雄详细信息就显示页面的底部了。...为什么这样是正常  selectedHero  undefined ,ngIf  DOM 移除了英雄详情。因此也就不用担心 selectedHero 绑定了。...所以你只要在用户点击一个  把 .selected 类应用到该元素上就可以了。 Angular  CSS 类绑定机制根据条件添加或移除一个 CSS 类变得很容易。

    4.4K70

    Angular 显示英雄列表

    本页面,你将扩展《英雄指南》应用,它显示一个英雄列表, 并允许用户选择一个英雄,查看该英雄详细信息。 创建模拟(mock)英雄数据 你需要一些英雄数据以供显示。... CLI 生成 HeroesComponent ,它也同时 HeroesComponent 创建了空白 heroes.component.css 样式表文件,并且 @Component.styleUrls...把显示英雄详情 HTML 包裹在一个  。 并且为这个 div 添加 Angular  *ngIf 指令,把它值设置 selectedHero。...点击一个英雄,它详情就出现了。 这个应用看起来又再次工作正常显示了。 英雄显示列表,当你单击英雄名字时候,有关你单击英雄详细信息就显示页面的底部了。...为什么这样是正常  selectedHero  undefined ,ngIf  DOM 移除了英雄详情。因此也就不用担心 selectedHero 绑定了。

    4K30

    分享5个关于 Vue 小知识,希望对你有所帮助

    在这篇文章,我们将学习如何在Vue.js获取选择选项。 Vue.js获取选择选项 我们可以通过将@change设置一个方法来Vue.js获取选择选项。...当我们将鼠标移出div,“hovered”消失了。 3、Vue.js获取组件内元素 有时候,我们希望Vue.js获取组件内元素。...然后,模板,我们添加 v-click-outside 并将其值设置 onClickOutside,以单击外部时运行该方法。...同样可以使用这个自定义指令来监听点击事件,并在点击事件发生在菜单外部,关闭上下文菜单。 工具提示(Tooltip):工具提示也有类似的需求。...工具提示展示,如果用户点击了工具提示以外其他地方,我们通常希望工具提示消失

    21730

    Angular 英雄编辑器

    应用程序现在有了基本标题。 接下来你要创建一个组件来显示英雄信息并且把这个组件放到应用程序外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 新组件。...创建一个 Hero 类 真实英雄当然不仅仅只有一个名字。  src/app 文件夹 Hero 类创建一个文件,并添加 id 和 name 属性。...编辑英雄 用户应该能在一个  文本输入框(textbox)编辑英雄名字。 当用户输入时,这个输入框应该能同时显示和修改英雄 name 属性。...AppModule Angular 需要知道如何应用程序各个部分组合到一起,以及该应用需要哪些其它文件和库。 这些信息被称为元数据(metadata)。... 元数据 imports 数组,这里是该应用所需外部模块列表。

    2.6K70

    Angular 英雄编辑器

    应用程序现在有了基本标题。 接下来你要创建一个组件来显示英雄信息并且把这个组件放到应用程序外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 新组件。...创建一个 Hero 类 真实英雄当然不仅仅只有一个名字。  src/app 文件夹 Hero 类创建一个文件,并添加 id 和 name 属性。...编辑英雄 用户应该能在一个  文本输入框(textbox)编辑英雄名字。 当用户输入时,这个输入框应该能同时显示和修改英雄 name 属性。...AppModule Angular 需要知道如何应用程序各个部分组合到一起,以及该应用需要哪些其它文件和库。 这些信息被称为元数据(metadata)。... 元数据 imports 数组,这里是该应用所需外部模块列表。

    2.5K50

    AngularDart 4.0 高级-结构指令 顶

    指南描述如何将指令应用于HTML模板元素引用了属性(attribute)名称。 还有其他两种Angular指令,在其他地方被广泛描述:(1)组件和(2)属性指令。...条件false,NgIfDOM删除它宿主元素,将它从DOM事件(它所依附)中分离出来,将组件Angular变化检测中分离出来并销毁它。 组件和DOM节点可以被垃圾收集并释放内存。...满足Angular模板类似需求。 编写一个结构指令 本节,您将编写一个与NgIf相反UnlessDirective结构指令。 NgIf条件true显示模板内容。... 条件,出现顶部(A)段落并且底部(B)段落消失。 条件,顶部(A)段被删除,底部(B)段出现。 ? 概要 您可以尝试实例查看本指南源代码(查看源代码)。...没有合适宿主元素使用作为分组元素。 Angular将星号(*)语法解析。 NgIf,NgFor和NgSwitch内置指令如何工作。

    16.1K20

    AngularDart4.0 英雄之旅-教程-08HTTP 顶

    在此页面,您将进行以下改进。 服务器获取英雄数据。 用户添加,编辑和删除英雄名字。 将更改保存到服务器。 您将教会应用程序对远程服务器Web API进行相应HTTP调用。...注册HTTP服务 应用程序可以使用BrowserClient之前,您必须将其注册服务提供者。 您应该可以应用程序任何位置访问BrowserClient服务。...通过id获取英雄 HeroDetailComponent要求HeroService获取一个英雄,HeroService当前获取所有英雄并且过滤器以id匹配一个hero。...当用户搜索框输入一个名字,你会对这个名字过滤英雄进行重复HTTP请求。 首先创建HeroSearchService,将搜索查询发送到服务器Web API。..." > {{hero.name}} 另外,新组件添加样式

    11K30

    【17】进大厂必须掌握面试题-50个Angular面试

    顾名思义,它们控制数据如何服务器流到HTML UI。 10. Angular范围是什么? Angular范围是一个引用应用程序模型对象。它是表达式执行上下文。...属性 -遇到匹配属性,指令将激活。 CSS- 指令会在遇到匹配CSS样式激活。 注释 -遇到匹配注释,指令将激活 27. Angular中有哪些不同类型过滤器?...您尝试将对象创建逻辑与使用对象逻辑分开,依赖注入概念会派上用场。“ config”操作使用DI,加载模块以检索应用程序元素,必须预先配置DI。...Angular找到ng-app指令,它将加载与其关联模块,然后编译DOM。 手动引导: 手动引导您提供了有关如何以及何时初始化Angular应用程序更多控制。...可以使用ng-hide指令与控制器一起轻松隐藏HTML元素,以单击按钮隐藏HTML元素。

    41.4K51

    IntelliJ IDEA 2022.2.2汉化版免登陆账号「winmac」

    - 长方法链键入提示IntelliJ IDEA显示长方法链类型提示您希望将每个调用类型视为具有泛型长方法链类型提示,这尤其有用。...确认更改之前,它可以您了解重构结果。您重复使用重复代码片段,这非常有用。...6、组态- 项目配置IntelliJ IDEA ,您可以添加新存储库排除某些传递依赖项。单击库属性编辑器新配置操作链接。...- 与Angular CLI新集成IntelliJ IDEA 2019,由于与ng add集成,您可以为Angular应用程序添加新功能。...您可以通过从过程上下文菜单中选择“ 执行”操作来运行过程,也可以在打开源代码单击工具“运行”按钮来运行过程。

    4.7K30

    如何在 React 中点击显示或隐藏另一个组件?

    React 是一种流行 JavaScript 库,用于构建动态用户界面。一个 React 应用程序,有时需要一个按钮或链接来触发显示或隐藏一个相关组件。...然后,我们组件返回值渲染一个按钮和一个条件渲染 div 元素。当用户单击按钮,onClick 事件处理函数会调用 setIsVisible 函数,并将 !...当用户单击菜单按钮,菜单应该出现,然后当用户单击菜单外部,菜单应该消失。下面是一个示例,展示如何使用 React 和事件处理函数来实现菜单显示和隐藏。...然后,我们编写了一个名为 handleClickOutside 事件处理函数,它将检查用户单击元素是否菜单之外。如果用户单击元素不在菜单,则将可见性设置 false,菜单将被隐藏。...当用户单击打开模态框按钮,模态框应该出现;当用户单击关闭按钮或模态框之外,模态框应该消失。下面是一个示例,展示如何使用 React 和事件处理函数来实现模态对话框显示和隐藏。

    4.9K10

    构建具有用户身份认证 Ionic 应用

    比如, Angular PWA 添加身份认证,有一个 BeerService ,它用于发送 API 请求携带 access token 。...--lab 标识会在浏览器打开一个页面你查看在不同设备效果。 ? LoginPage 加载时会自动聚焦到 email 输入框。...出现提示输入 "y",按回车。 TIP: 我发现在模拟器运行应用程序最大问题是键盘很难弹出。...安装过程,它会提示你将 Android SDK 安装到哪里。将这个路径设置 ANDROID_HOME 环境变量。...PWA 是可以安装在系统 web 应用程序。它可以离线情况下工作,使用是你最后一次与 app 交互数据缓存。添加 PWA 功能可以 app 加载更快,提供更好用户体验。

    23.2K50

    AngularDart4.0 高级-属性(Attribute)指令 顶

    本页演示了如何构建一个简单myHighlight属性指令当用户悬停在那个元素上来设置元素背景颜色 你可以像这样应用它: Highlight me!... 现在在AppComponent引用此模板,并将Highlight指令添加到指令列表Angular模板遇到myHighlight,就会识别该指令。...它创建了一个HighlightDirective类实例,并将元素引用注入到指令构造函数,该构造函数将元素背景样式设置黄色。...这是执行线束和指令。 ? 绑定到第二个属性 这个highlight指令有一个可定制属性。 一个真正应用程序,它可能需要更多。...目前,默认颜色 - 直到用户选择高亮颜色为止颜色 - 被硬编码“red”。 模板开发人员设置默认颜色。

    3.2K10

    构建具有用户身份认证 Ionic 应用

    比如, Angular PWA 添加身份认证,有一个 BeerService ,它用于发送 API 请求携带 access token 。...--lab 标识会在浏览器打开一个页面你查看在不同设备效果。 ? LoginPage 加载时会自动聚焦到 email 输入框。...出现提示输入 "y",按回车。 TIP: 我发现在模拟器运行应用程序最大问题是键盘很难弹出。...安装过程,它会提示你将 Android SDK 安装到哪里。将这个路径设置 ANDROID_HOME 环境变量。...PWA 是可以安装在系统 web 应用程序。它可以离线情况下工作,使用是你最后一次与 app 交互数据缓存。添加 PWA 功能可以 app 加载更快,提供更好用户体验。

    23.8K00

    AngularDart 4.0 高级-管道 顶

    PipeTransform接口定义该方法并指导工具和编译器。 从技术上讲,这是可选; 无论角度如何Angular都会查找并执行transform方法。 现在您需要一个组件来演示管道。...您使用管道Angular会选择更简单,更快速变更检测算法。  不使用管道 在下一个示例,组件使用默认积极变化检测策略来监控并更新其hero列表每个英雄显示。...在这个例子,这是一个简单规则,其中更改数据唯一方法是添加一个英雄。 更常见情况是,您不知道数据何时发生变化,特别是以多种方式变异数据应用程序,可能在远离应用程序位置。...您可以实例(查看源代码)确认,您添加英雄,即使您变更heroes列表,飞行英雄也会显示更新。 不纯AsyncPipe Angular AsyncPipe是一个不纯管道有趣例子。...Angular每秒钟多次调用这些管道方法,即使是中等大小列表,用户体验也会严重降级。 filter和orderBy经常被滥用在Angular 1应用程序,导致投诉Angular本身很慢。

    6.4K20
    领券