组件的一个实例中的(click)事件会触发另一个实例中的功能.我不知道如何解释这一点.我附上了一个stackblitz个例子.

单击这两个按钮都会打印相同的id,即使已将不同的id传递给其实例.理想情况下,点击第一个按钮应打印1,第二个按钮应打印2

推荐答案

问题是您总是点击really次第一个按钮

您的按钮上有一个标签.所以,实际上您点击的是标签,而不是按钮.您的标签有for="my_btn",两个按钮的"id"都是my_btn

如果您删除按钮的类"bTN"并单击"标签",您就可以看到我到底在说什么.

您可以在您的component.ts(组件外部)中声明一个变量uniqueId,以及一个组件唯一id的变量

let nextUniqueId = 0; //<--see that it's outside the component. 
                      //It's a variable of the "document"
@Component({
  selector: 'app-mybutton',
  standalone: true,
  templateUrl: './mybutton.component.html',
  styleUrl: './mybutton.component.css',
})
export class MybuttonComponent {
  @Input() id:number
  uniqueId='btn'+nextUniqueId++  //<--give a property uniqueId of the component
                                 //and incremente la variable document.nextUniqueId
  constructor(){
  }

  func() {
    console.log(this.id);
  }
}

在您的.html"绑定到.ts的uniqueId中

<button class="btn" [id]="uniqueId" (click)="func()">mybutton</button>
<label [for]="uniqueId" class="label">label_btn</label>

♪至stackblitz

注:如果这个"变通方法"看起来很奇怪,那么它是相同的material Angular 使用,例如在Radio按钮中(您可以在github中看到)

Html相关问答推荐

为什么在Vuettify 3中使用Flex时会忽略宽度?

Chrome中是否有一个本地显示密码功能,用于`input type = password/`?""<"">

UseEffect()从不调用preact

为什么这个高度为100%的页面会出现滚动条?

在元素之间添加空格

如何在一张表中逃脱边境坍塌--崩溃?

粘滞的导航栏延伸到超过页边距的右侧

在CSS中旋转排除的蒙版图像

我无法使用背景图像css,因为我在VS代码中将照片放在不同的文件夹中

轨道上的居中范围滑块拇指(Webkit)

如何生成随机字符串的字母数字字符集长度到html跨度?

rvest: Select 不包含链接的段落(<;p>;)

如何防止弹性项目溢出容器?

为什么我的图像在悬停时与固定顶部栏重叠?

使用修饰键微调 HTML 输入范围中的值

将组件移动到页面底部 Angular

如何使用 CSS 应用带有笔划的文本阴影?

如何通过像图像一样的 元素来调整 SVG 图标的大小

如何在 svelte 中对静态 html 文件使用href=

网站页脚中的 Quarto 安装版本