angulartypescriptcomponentssender

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


The components are generated through an ngFor. The same click event handler is bound to all of them. I want to capture the Component on whom the user clicked inside the event handler as an argument.

Template

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

Code Behind

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

What I have already tried

Eventually after capturing the component, I'll want to set it's [selected] Input to true and clear the last selected component, which shouldn't be that hard if I can only get the component and store it in a local variable.


Solution

  • Maybe try:

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