Angular 2 Hover event

前端 未结 9 1145
深忆病人
深忆病人 2020-12-02 06:20

In the new Angular2 framework, does anyone know the proper way to do a hover like an event?

In Angular1 there was ng-Mouseov

相关标签:
9条回答
  • 2020-12-02 06:54

    If you want to perform a hover like event on any HTML element, then you can do it like this.

    HTML

     <div (mouseenter) ="mouseEnter('div a') "  (mouseleave) ="mouseLeave('div A')">
            <h2>Div A</h2>
     </div> 
     <div (mouseenter) ="mouseEnter('div b')"  (mouseleave) ="mouseLeave('div B')">
            <h2>Div B</h2>
     </div>
    

    Component

    import { Component } from '@angular/core';
    
    @Component({
        moduleId: module.id,
        selector: 'basic-detail',
        templateUrl: 'basic.component.html',
    })
    export class BasicComponent{
    
       mouseEnter(div : string){
          console.log("mouse enter : " + div);
       }
    
       mouseLeave(div : string){
         console.log('mouse leave :' + div);
       }
    }
    

    You should use both mouseenter and mouseleave events inorder to implement fully functional hover events in angular 2.

    0 讨论(0)
  • 2020-12-02 06:55

    For handling the event on overing, you can try something like this (it works for me):

    In the Html template:

    <div (mouseenter)="onHovering($event)" (mouseleave)="onUnovering($event)">
      <img src="../../../contents/ctm-icons/alarm.svg" class="centering-me" alt="Alerts" />
    </div>
    

    In the angular component:

        onHovering(eventObject) {
        console.log("AlertsBtnComponent.onHovering:");
        var regExp = new RegExp(".svg" + "$");
    
        var srcObj = eventObject.target.offsetParent.children["0"];
        if (srcObj.tagName == "IMG") {
            srcObj.setAttribute("src", srcObj.getAttribute("src").replace(regExp, "_h.svg"));       
        }
    
       }
       onUnovering(eventObject) {
        console.log("AlertsBtnComponent.onUnovering:");
        var regExp = new RegExp("_h.svg" + "$");
    
        var srcObj = eventObject.target.offsetParent.children["0"];
        if (srcObj.tagName == "IMG") {
            srcObj.setAttribute("src", srcObj.getAttribute("src").replace(regExp, ".svg"));
        }
    }
    
    0 讨论(0)
  • 2020-12-02 07:00

    If the mouse over for all over the component is your option, you can directly is @hostListener to handle the events to perform the mouse over al below.

      import {HostListener} from '@angular/core';
    
      @HostListener('mouseenter') onMouseEnter() {
        this.hover = true;
        this.elementRef.nativeElement.addClass = 'edit';
      }
    
      @HostListener('mouseleave') onMouseLeave() {
        this.hover = false;
        this.elementRef.nativeElement.addClass = 'un-edit';
      }
    

    Its available in @angular/core. I tested it in angular 4.x.x

    0 讨论(0)
提交回复
热议问题