Angular 5 - 鼠标输入时显示一个按钮,鼠标离开时隐藏一个按钮

2024-01-19

当用户将鼠标悬停在列表项上时,我希望显示一个按钮。当用户离开列表项时,我希望不显示该按钮。

我遇到了 mouseenter 事件和 mouseleave 事件。

.html

<mat-list-item (mouseenter)="enter($event)" (mouseleave)="leave($event)" class="chat-message-body" *ngIf="auth._id !== message.author._id" fxLayoutAlign=""
    dir="ltl">
    <div matLine>
        <b>{{message.author.profile.username}} </b>
        <span>{{message.created_at | date:'shortTime'}} </span>
    </div>
    <button mat-icon-button>
        <mat-icon aria-label="">keyboard_arrow_down</mat-icon>
    </button>
    <span matLine> {{message.body}} </span>
    <img matListAvatar class="img-box" src="http://via.placeholder.com/30x30" alt="...">
</mat-list-item>

.ts

enter(e) {
    console.log("enter");
}

leave(e) {
    console.log("leave");
}

除了声明这些功能之外,我不知道如何定位此列表项中的按钮以显示和隐藏它,具体取决于用户是否已进入列表项块或离开。


我为此创建了一个解决方案。

当用户“鼠标进入”mat-item-list 块时,我将变量设置为 true 并在按钮中添加 ng-if,以便当变量为 true 时它会显示,当用户从 mat-item-list 中“鼠标离开”时该变量设置为 false。假设您只有一个 mat-item-list,这可以很好地工作。

拥有多种手段,当用户进入块时,我需要一个变量来存储索引值,并确定索引值集是否与我悬停的索引值相同。如果是,将显示该按钮。

.html

<mat-list dense>
        <ng-template ngFor let-message [ngForOf]="conversation?.messages" let-i="index" let-odd="odd" [ngForTrackBy]="trackById">
            <mat-list-item (mouseenter)="enter(i)" (mouseleave)="leave(i)" class="chat-message-body" *ngIf="auth._id === message.author._id"
                fxLayoutAlign="" dir="rtl">
                <img matListAvatar class="img-box" src="http://via.placeholder.com/30x30" alt="...">
                <button mat-icon-button *ngIf="hoverIndex == i">
                    <mat-icon aria-label="">keyboard_arrow_down</mat-icon>
                </button>
                <div matLine>
                    <b>{{message.author.profile.username}} </b>
                    <span>{{message.created_at | date:'shortTime'}} </span>
                </div>
                <span matLine> {{message.body}} </span>
            </mat-list-item>
        </ng-template>
    </mat-list>

.ts

enter(i) {
    this.hoverIndex = i;
}

leave(i) {
    this.hoverIndex = null;
}

这个解决方案看起来比尝试查找特定的 dom 元素并向其添加 display:block/none 更干净。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 5 - 鼠标输入时显示一个按钮,鼠标离开时隐藏一个按钮 的相关文章

随机推荐

  • 从 android init.rc 执行静态程序

    我想在以下位置启动一个自定义程序init过程 我静态编译了这个程序 它可以在我启动的 android stock ROM 中正常运行 来自安卓init rc我读到的文档exec命令是我需要的 顺便说一句 我能看到的都是dmesg我的程序退出
  • 如何在Azure功能上安装apt-get包

    在 Linux 消费计划上运行 python Azure 函数 我已经能够使用 VS Code 成功将该函数部署到 Azure requirements txt 中的所有包都可以顺利安装 但现在我需要安装tesseract 它只能通过apt
  • 是否可以对特定于浏览器的 CSS 使用 mixin

    我正在寻找一种使用 mixin 进行特定于浏览器的 CSS hack 的解决方案 我正在使用 JavaScript 在 HTML 类中添加浏览器标签 喜欢 ie ie7 ie8 ie9 我想使用 mixin 像 box test margi
  • 创建自定义 DatePicker 对话框

    要求 当用户单击 TextView 时 应打开一个日期选择器 选择的默认日期应该是 TextView 中的日期 如果日期是过去的日期 则应禁用 DatePicker 对话框的 设置 按钮 如果可点击的 TextView 为空 则 DateP
  • 数据库驱动类动态加载

    我想用 java 开发一个与数据库无关的应用程序 我选择hibernate作为ORM jdbc的问题在于 它只是一个接口 我们需要在类路径中包含db的驱动程序类 由于数据库应该是可配置的 我必须动态加载数据库的驱动程序类 用户应该将驱动程序
  • graphviz - 如何在矩形布局中以循环方式排列节点?

    预脚本 就在我完成这些示例时 我看到了 往返 流程主题 https stackoverflow com questions 18877045 graphviz how to create a roundtrip flow 看起来不错 既然我
  • 图片上方半透明div

    我有一个角色的 PNG 图像 我想要类似的东西 http www swfcabin com open 1364482220 http www swfcabin com open 1364482220 如果有人点击角色身体的一部分 它将被 选
  • Django REST Framework - 如何返回 404 错误而不是 403

    仅当用户经过身份验证并且满足某些其他条件时 我的 API 才允许访问 任何请求 某些对象 class SomethingViewSet viewsets ModelViewSet queryset Something objects fil
  • 我们有专门针对 Spring 5.x 的 XSD 吗?

    谁能告诉我 Spring 5 版本的 XSD 是否可用 有没有类似的东西spring beans 5 1 xsd spring context 5 1 xsd spring mvc 5 1 xsd or spring beans 5 0 x
  • C++ Linux 与另一个程序交互 stdin / stdout

    我在 Linux 中有一个可以与 stdin stdout 交互的可执行文件 我正在尝试用 C 编写一个程序 它可以交互地调用该程序 向其标准输入发送命令 并捕获其标准输出 我真的很困惑 我不想分叉我的程序 是吗 我确实希望我的程序能够启动
  • 异步连接管道

    我想将相同的信息写入两个管道 但我不想等待第一个管道读取 这是一个例子 mkfifo one mkfifo two echo hi tee one two cat one cat two cat one直到开始阅读cat two正在运行 有
  • 我如何请求浏览器始终更新(也称为从不缓存)某些页面元素,例如 CSS 表?

    我在开发页面时注意到一个始终困扰我的问题 虽然 Firefox 我常用的 开发 浏览器 总是在服务器上更改 CSS 和图像时更新它们 但 Internet Explorer 并不总是这样做 通常 我需要刷新 IE 中的页面 然后它才会向服务
  • 使用Selenium + Scrapy

    我正在尝试将 scrapy 与 selenium 结合使用 以便能够与 javascript 交互 并且仍然拥有 scrapy 提供的强大的抓取框架 我写了一个访问的脚本http www iens nl http www iens nl 在
  • EntityFramework.6.1.2-beta1\tools\init.ps1 受到限制,无法运行enable-migrations 命令

    Visual Studio 2013 C ASP NET MVC 问题 EntityFramework 6 1 2 beta1 tools init ps1 无法加载 因为其执行被软件限制策略阻止 有关详细信息 请联系您的系统管理员 当我尝
  • Android Studio 收到“必须实现 OnFragmentInteractionListener”

    我收到一条消息 上面写着 必须实现 OnFragmentInteractionListener 而且我已经有了它 我已经查看了这里提出的每个问题 但没有人帮助我 有人可以帮我吗 ERROR FATAL EXCEPTION main Proc
  • 如何找出 next() 何时到达末尾,然后转到第一项

    我使用 next 函数显示一系列元素 不过 一旦到达终点 我想转到第一个元素 有任何想法吗 这是代码 Prev Next Click nextSingle click function Get the height of the next
  • 切换 Git 分支时处理 DataBinding 错误

    在数据绑定布局已更改 删除的 Git 分支之间切换时 我遇到了很多数据绑定问题 当切换 Git 分支时删除文件时 我经常会遇到这样的构建错误
  • 在 Python 中使用 Mock 来实现嵌套对象(DynamoDB 和表)

    我想使用来自 DynamoDb 的不同输入来测试函数的行为 有两种主要行为 当在表中找到搜索关键字时和当未在表中找到搜索关键字时 这是该函数的最小代码 import boto3 from boto3 dynamodb conditions
  • 类型注释中未定义名称[重复]

    这个问题在这里已经有答案了 我目前正在创建一个 python 线性代数模块 以供娱乐和练习该语言 我最近尝试向模块添加类型注释 如下所示 class Vector Various irrelevant implementation deta
  • Angular 5 - 鼠标输入时显示一个按钮,鼠标离开时隐藏一个按钮

    当用户将鼠标悬停在列表项上时 我希望显示一个按钮 当用户离开列表项时 我希望不显示该按钮 我遇到了 mouseenter 事件和 mouseleave 事件 html