繁体   English   中英

使用 Class 向元素添加 eventListener

[英]Adding a eventListener to elements with Class

我有这个挑战,我不知道如何实现 function 来获得方块上的点击事件。 我想用方形 class 获得每个按钮的点击事件。

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

@Component({
  selector: 'app-area',
  template: `
    <div id="statusArea" className="status">Next player: <span>X</span></div>
    <div id="winnerArea" className="winner">Winner: <span>None</span></div>
    <button id="reset">Reset</button>
    <section>
      <div class="row" *ngFor="let row of [1, 2, 3]">
        <button *ngFor="let col of [1, 2, 3]" class="square" style="width:40px;height:40px;"></button>
      </div>
    </section>
  `,
  styles: []
})

export class MainAppComponent implements OnInit {

  ngOnInit() { 
    const btn = document.getElementById('reset')
    const squares = Array.from(document.querySelectorAll('.square'))

    squares.forEach(square =>{
      square.addEventListener('click', function handleClicks(event){
        console.log('botão clicado');
      })
    })

    btn.addEventListener('click', function handleClick(event){
      console.log("clicado");
    })
  }
}

只是为了确保这一点很清楚:您不应该在 Angular 中使用 DOM。

该框架已经提供了添加事件、属性绑定和 HTML 选择的机制(还有很多东西)

在您的情况下,您试图手动添加单击事件,但框架通过简单地将(click)="onSquareClick()"添加到模板中的按钮元素来覆盖您。

<button *ngFor="let col of [1, 2, 3]" class="square" style="width:40px;height:40px;" (click)="onSquareClick()"></button>

如果你真的需要玩 DOM,Angular 引入了指令的概念以及一些在这种情况下可以派上用场的实用程序。
在这里你可以找到一些例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM