在 Angular 2 中捕获 ng-content 事件

2024-02-06

我正在经历本教程 https://scotch.io/tutorials/angular-2-transclusion-using-ng-content理解角度 2ng-content。我想捕获触发的事件ng-content。我有以下组件:

@Component({
    moduleId: module.id,
    selector: 'card',
    template: `
    <ng-content (click)="onClick($event)"></ng-content>
    `
})
export class CardComponent {

    onClick(){
        console.log('clicked');
    }
}

在这里,正如你所看到的,我正在设置一个监听器click事件。但由于某些原因它没有触发。好像整个ng-content标签被替换。因此,为了捕获当前的事件,我正在这样做:

template: `
    <div (click)="onClick($event)">
      <ng-content></ng-content>
    </div>
    `

有没有更好的方法来做到这一点?因为我不想包裹我的ng-content into a div以避免样式问题。谢谢。Plnkr https://plnkr.co/edit/J0JROxAzVVUf57EhX4aX?p=preview


通过使用主机声明将事件侦听器绑定到组件元素,您可以实现几乎相同的结果。

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

@Component({
  selector: 'card',
  template: `<ng-content></ng-content>`
})
export class ButtonComponent {

  @HostListener('click', ['$event.target'])
  onClick(target) {
    console.log('Clicked on: ', target);
  }

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

在 Angular 2 中捕获 ng-content 事件 的相关文章

随机推荐

  • 无法设置未定义的属性“clientMutationId”

    我收到以下错误 当尝试通过 graphiql 运行突变时 请帮助我解决此问题或指向一个链接 我可以在其中找到反应中继突变示例 mutation createUser input username Hamza Khan clientMutat
  • pylint 为可调用的对象属性提供不可调用错误

    不确定我是否做错了什么或者这是否是一个问题pylint 在下面的代码中我得到一个 linting 错误self type不可调用E1102 虽然我可以忽略它并继续工作 但似乎这种事情应该很容易解决 只是不知道如何解决它 from typin
  • 使用正则表达式进行全字匹配

    我想要一个匹配 bananas 或 睡衣 但不匹配 bananas2 或 bananaspajamas 或 banana 或基本上除了这两个单词之外的任何内容的C 正则表达式 所以我这样做了 include
  • 在golang中传输一个大文件

    客户端发送文件 大小可能大于5G 发送到从服务器 然后从服务器发送到主服务器 从属设备会将临时文件保存到自身吗 我不希望发生这种情况 因为它会减慢上传速度并浪费从站的内存 有什么办法可以避免这种情况吗 在 golang 中传输大文件的最佳方
  • 将 DOM 操作应用于 HTML 并保存结果?

    我有大约 100 个静态 HTML 页面 我想对其应用一些 DOM 操作 它们都遵循相同的 HTML 结构 我想对每个文件应用一些 DOM 操作 然后保存生成的 HTML 这些是我想要应用的操作 start h1 title h2 desc
  • [Flags] Enum 属性在 C# 中意味着什么?

    我有时会看到如下的枚举 Flags public enum Options None 0 Option1 1 Option2 2 Option3 4 Option4 8 我不明白到底是什么 Flags 属性确实如此 有人可以发布一个很好的解
  • 在 Delphi 中创建可访问的 UI 组件

    我正在尝试从标准 VCL TEdit 控件检索可访问的信息 get accName 和 Get accDescription 方法返回空字符串 但 get accValue 返回输入到 TEdit 中的文本值 我刚刚开始尝试理解 MSAA
  • 如何在 Drupal 8 主题中添加 javascript 库?

    我正在尝试包含一个自定义 javascript 文件来操作我正在构建的 Drupal 8 主题中的菜单 我按照 Drupal 8 主题指南中的说明进行操作 将其包含在我的 info yml 文件中 js libraries librarie
  • 尝试第一个日志语句时,Boost Log 会导致崩溃(当不是管理员时)

    我现在正在尝试部署我的应用程序 它使用 Boost Log Boost 1 58 它是一个简单的控制台应用程序 在 Windows 7 中运行 日志记录在我的个人桌面上运行得非常好 但是 当我将应用程序部署到 Win7 虚拟机时 它在我的第
  • ZF2如何监听特定控制器的调度事件

    如何监听特定控制器的调度事件 目前我执行以下操作 模块 php public function onBootstrap EventInterface event application event gt getApplication eve
  • JavaFX:在 .FXML 文件中嵌入编码图像

    我想将编码图像嵌入到 FXML 中 我需要这个 因为我正在编写 svg 和 fxml 之间的转换器 我尝试过这个
  • F# 的编译器是用哪种语言编写的?

    F 的编译器是用哪种语言编写的 我听说 F 的编译器是用 F 编写的 F 编译器的每个下一个版本都是在其先前版本的基础上编写的 But 1 无法谷歌是否属实 2 如果属实 F 编译器的第一个版本是用哪种语言编写的 F 编译器是用 F 编写的
  • 热重载不适用于我的 webpack 5 反应项目

    我正在创建一个新项目 当我完成安装 npm 包并运行基本设置时 一切正常 除了当我在代码中进行更改并保存文件并移动到浏览器以查看更改时 页面没有在浏览器中重新加载 我必须手动刷新页面才能看到新的更改 这是我的 package json 文件
  • 如何在 sqlite 中构造我的查询?

    我想检索今天的数据 目前我有类似的东西SELECT FROM myTable WHERE timeStamp gt DATETIME NOW 1 DAY 但这给了我从现在到 24 小时前的结果 而不仅仅是今天 即无论自 00 00 以来已经
  • Asp.net 5 Web api返回状态代码和正文

    我正在使用 ASP NET 5 开发一个项目 并且正在编写一个 Web api 我继承了一些代码和数据库存储过程 它们使用 raiserror 来指示出现问题 用户名 密码不正确 许可证过期等 除了消息文本之外 存储过程不返回任何内容来唯一
  • 动态对象属性的 Typescript 动态联合类型

    如何从动态对象属性中获取动态联合类型 const config devices Brand1 model1 Brand2 model2 model3 export type DeviceBrand keyof typeof config d
  • 如何在 Laravel 5 中测试 Artisan 命令

    我构建了一个 Artisan 命令来从套接字接收数据 我想为此命令编写单元测试 但我不确定如何编写这样的测试 有人知道如何写吗 测试示例
  • 如何将 Swift 类传递给需要类的 Objective-C 方法?

    我正在寻找使用 Objective C 库saxy https github com reaster saxy将一些 XML 解析为对象 但方法签名是 id rootXPath NSString xpath toMany Class toT
  • Json.NET 序列化 float/double 并具有最小的小数位,即没有多余的“.0”?

    序列化浮点数和双精度数时 如果数字不包含任何小数部分 Json NET 总是在末尾添加 0 我想知道是否有一种简单的方法可以绕过这个问题 从而得到更紧凑的表示 当序列化包含许多数字的对象时 额外的句点和零会增加 例如 运行此代码时 Json
  • 在 Angular 2 中捕获 ng-content 事件

    我正在经历本教程 https scotch io tutorials angular 2 transclusion using ng content理解角度 2ng content 我想捕获触发的事件ng content 我有以下组件 Co