Search code examples
angularviewchild

How do I pass $event object from Angular TS file?


I have the below code which i am using to expand or collapse the elements

<div class="accordion" (click)="toggleAccordian($event, i)">

clickMenu(event: any, index: any) {
    var element = event.target;

    let elements = this.divElements.nativeElement.querySelectorAll('.sub');

    for (var i = 0; i < elements.length; i++) {
      elements[i].classList.remove('subactive');
    }

  }

Now i want to call clickMenu from ngInIt event. How do i pass $event


Solution

  • You need to mock the element target, using ViewChild like so, static true is needed so that the view child is avaiable during ngOnInit hook itself!

    HTML

    <div class="accordion" (click)="toggleAccordian($event, i)" #accordion>
    

    TS

    @ViewChild('accordion', { static: true }) accordion!: ElementRef<any>;
    ...
    
    ngOnInit() {
        this.clickMenu({target: accordion?.nativeElement} as any, 0);
    }
    ...
    
    ...
    clickMenu(event: any, index: any) {
        var element = event.target;
    
        let elements = this.divElements.nativeElement.querySelectorAll('.sub');
    
        for (var i = 0; i < elements.length; i++) {
          elements[i].classList.remove('subactive');
        }
    
    }
    ...