【问题标题】:Angular - extracting the click info of an HTML elementAngular - 提取 HTML 元素的点击信息
【发布时间】:2018-05-17 06:49:25
【问题描述】:

参加 Udemy 课程后,我正在使用 Angular 4 构建应用程序。我开始玩一些事件。到目前为止,只有一个组件 app.component.ts。在我的 HTML 中,我有一个附加了点击事件的标题元素:

<h2 class="url-link" (click)="viewTopics()" #headerLink>View archived topics</h2>

我将本地引用#headerLink 添加到 h2 元素中,以尝试监听其他 HTML 元素中的点击事件。但我不能这样做。我对事件函数中的元素做了一个console.log:

export class AppComponent {
  @ViewChild('headerLink') headerLink: ElementRef;

  viewTopics() {
    console.log(this.headerLink);
  }
}

控制台日志显示 h2 元素具有属性 nativeElement,该属性具有 onclick 属性,但此 onclick 属性始终为空。是否可以通过这种方式访问​​ h2 元素上的点击事件,还是我必须仅在 h2 元素上使用(点击)事件?

【问题讨论】:

  • 您可以将“headerLink”传递给您在 HTML 上编写的任何函数。 (click)="viewTopics(headerLink)" - 甚至在另一个元素上
  • 我的问题是如何从这个本地参考 headerLink 获取点击信息?我能找到的唯一属性是 onclick 属性,它始终为空。我看错了房产吗?

标签: javascript html angular


【解决方案1】:

可以通过传入事件获取点击事件详情

<h2 class="url-link" (click)="viewTopics($event)" #headerLink>View archived topics</h2>

viewTopics(event){
    console.log('evt', event);
}

【讨论】:

    【解决方案2】:
    <h2 (click)="viewTopics()"></h2>
    <p *ngIf='headerIsClicked === true'>Toggle me</p>
    <h3 *ngIf='headerIsClicked === true'>and me</h3>
    
    viewTopics(): void {
        this.headerIsClicked = !this.headerIsClicked;
      }
    

    其中headerIsClickedpublic boolean 属性,例如public headerIsClicked: boolean = false;

    【讨论】:

    • 我的问题是,如果我想在另一个 HTML 元素(例如

      上)上收听 h2 上的这个点击事件,我该怎么做?因此,这些其他元素应仅在例如单击 h2 时才显示。此外,上面示例中的 console.log(this.headerLink) 似乎没有仍然为空的 onclick 属性。
    • 像我提到的那样绑定点击,然后在 viewTopics 函数中设置一个状态(布尔值),然后在你提到的其他元素上使用 *ngIf 来隐藏它们或使它们可见跨度>
    • 所以使用另一个变量将状态设置为h2被点击。我设法做到了,但我认为没有其他变量也可以做到这一点,而只需检查 h2 的 HTML 属性以监听其他 HTML 元素中的点击。
    • 其他但不完全是您所要求的是host: { '(document:click)': 'onClick($event)', },,您将来可能需要它
    • 我在主机绑定和主机监听器上发现了另一个问题stackoverflow.com/questions/37965647/…
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多