在新的Angular2框架中,有人知道如何像事件一样执行悬停吗?
在Angular1中有ng-Mouseover,但这似乎没有被延续。
我看了所有的文件,什么都没发现。
在新的Angular2框架中,有人知道如何像事件一样执行悬停吗?
在Angular1中有ng-Mouseover,但这似乎没有被延续。
我看了所有的文件,什么都没发现。
当前回答
你可以用一个主机:
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({
selector: '[myHighlight]',
host: {
'(mouseenter)': 'onMouseEnter()',
'(mouseleave)': 'onMouseLeave()'
}
})
export class HighlightDirective {
private _defaultColor = 'blue';
private el: HTMLElement;
constructor(el: ElementRef) { this.el = el.nativeElement; }
@Input('myHighlight') highlightColor: string;
onMouseEnter() { this.highlight(this.highlightColor || this._defaultColor); }
onMouseLeave() { this.highlight(null); }
private highlight(color:string) {
this.el.style.backgroundColor = color;
}
}
只需调整它到你的代码(在:https://angular.io/docs/ts/latest/guide/attribute-directives.html)
其他回答
在Angular2+中简单地做(mouseenter)属性…
在你的HTML中:
<div (mouseenter)="mouseHover($event)">Hover!</div>
在你的组件中:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'component',
templateUrl: './component.html',
styleUrls: ['./component.scss']
})
export class MyComponent implements OnInit {
mouseHover(e) {
console.log('hovered', e);
}
}
@Component({
selector: 'drag-drop',
template: `
<h1>Drag 'n Drop</h1>
<div #container
class="container"
(mousemove)="onMouseMove( container)">
<div #draggable
class="draggable"
(mousedown)="onMouseButton( container)"
(mouseup)="onMouseButton( container)">
</div>
</div>`,
})
http://lishman.io/angular-2-event-binding
如果你只是想要一个悬停效果,请使用hover .css。
NPM我盘旋。css 在文件angular中。Json属性projects.architect.build.options.styles——>添加这一行到数组:node_modules/hover.css/scss/hover.scss
在你想要效果的元素上使用它们的任何类,即:
<div *ngFor="let source of sources">
<div class="row justify-content-center">
<div class="col-12 hvr-glow">
<!-- My content -->
</div>
</div>
</div>
如果你对鼠标进出某个组件感兴趣,你可以使用@HostListener装饰器:
import { Component, HostListener, OnInit } from '@angular/core';
@Component({
selector: 'my-component',
templateUrl: './my-component.html',
styleUrls: ['./my-component.scss']
})
export class MyComponent implements OnInit {
@HostListener('mouseenter')
onMouseEnter() {
this.highlight('yellow');
}
@HostListener('mouseleave')
onMouseLeave() {
this.highlight(null);
}
...
}
正如@Brandon评论OP (https://angular.io/docs/ts/latest/guide/attribute-directives.html)中的链接所解释的那样
如果您想在任何HTML元素上执行类似悬停的事件,那么您可以这样做。
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>
组件
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);
}
}
你应该同时使用mouseenter和mouseleave事件,以便在angular 2中完全实现功能性的悬停事件。