0

I have the following code in my ngOnInit:

ngOnInit(): void {
let selectedArea:any = null;
let areas = document.querySelectorAll<SVGElement>('path'); // gets an array of all of the paths in the DOM
areas.forEach((area) => {      // for each svg path
   area.addEventListener('mouseover', function () {
     area.style.fill = '#2100b6'; // add hover
    });
    area.addEventListener('mouseout', function () {
      area.style.fill = ''; // return to default on mouse out
     });
     area.addEventListener('click', function () {
       if (selectedArea) {
         area.style.fill="black";
       }
       if (selectedArea !== area.id) {
         selectedArea = area.id;
         area.setAttribute('class', 'selectedArea'); // changed
         area.style.fill="black";
       }
        console.log(selectedArea);
      });
      this.selectedRegion = selectedArea
    }); 
} 



selectedRegion : number = 0

"selectedArea" logs the selected region's code from an SVG map. I tried to get that into the new variable "selectedRegion", but it did not work.

So, I want to use "selectedArea" outside of ngOninit, but I don't have any idea, how to do it.

Irakli925
  • 1
  • 1
  • 1
  • See the answers to the linked questions. If you make your event handlers arrow functions, `this` will have the correct value and that code will set `selectedRegion` on your instance when the `click` occurs. – T.J. Crowder May 02 '22 at 07:22

0 Answers0