单击组件时,将组件本身作为参数传递

When clicked on a Component, pass the Component itself as a parameter

组件是通过 ngFor 生成的。相同的点击事件处理程序绑定到所有这些。我想捕获 Component 用户在事件处理程序中单击的对象作为参数。

模板

<div>
  <app-my-component (click)="pageClicked(<sender>)" *ngFor="let page of pages"></app-my-component>
</div>

代码隐藏

pageClicked(sender: MyComponent): void {
  // sender would be the COMPONENT who called this function.
}

我已经试过了

最终在捕获组件后,我想将它的 [selected] 输入设置为 true 并清除最后选择的组件,如果我只能获取组件并存储它应该不难在局部变量中。

也许试试:

<ng-container *ngFor="let page of pages">
    <app-my-component #component (click)="pageClicked(component)"
    </app-my-component>
</ng-container>

模板引用变量

<div>
  <app-my-component #mycomponent (click)="pageClicked(mycomponent)" *ngFor="let page of pages"></app-my-component>
</div>
pageClicked(sender: MyComponent): void {
  // sender.selected is now available
}

不重要

我一开始试过这个,但是得到一个空对象,估计项目还没有建立...

我会把这个留在这里供以后参考和问同样问题的人。

如果您使用模板引用变量,您将传递整个组件,

<app-my-component #component (click)="pageClicked(component)"..>

如果你有一个 @OputPut 在发射器时使用它,但重命名事件 (click),使用例如(onClick)

//your component
@Output()onClick:EventEmitter<MyComponent>=new EventEmitter<MyComponent>()

clickButton(){
   this.onClick.emit(this)
}

看到一个fool stackbliz