0

I have an element:

<div (mouseenter)="enter()" (mouseleave)="leave()">Title</div>

TS:

onHover = false;

enter() {
    this.onHover = true;
    // doing some other stuff...
}

leave() {
    this.onHover = false;
    // doing some other stuff...
}

I want to add 2 seconds delay to mouseenter event like in this question. If user hovers >= 2 seconds on that element, I want to trigger mouseenter, not before. I tried setTimeout, but it doesn't work as intended.

YSFKBDY
  • 735
  • 1
  • 12
  • 38

1 Answers1

3

I realised that I forgot to add clearTimeout. I've solved it like this:

onHover = false;
to;

enter() {
    this.to = setTimeout(() => {
        this.onHover = true;
        // doing some other stuff...
    }, 2000);
}

leave() {
    clearTimeout(this.to);
    this.onHover = false;
    // doing some other stuff...
}
YSFKBDY
  • 735
  • 1
  • 12
  • 38