是否可以将click事件附加到指令上或指令内的元素? (不是组件)例如..我有一个如下定义的指令:
import { Directive,OnInit,Input,ElementRef,Renderer } from '@angular/core'; declare var $: any; // JQuery @Directive({ selector: '[gridStack]' }) export class GridStackDirective implements OnInit { @input() w: number; @input() animate: boolean; constructor( private el: ElementRef,private renderer: Renderer ) { renderer.setElementAttribute(el.nativeElement,"class","grid-stack"); } ngOnInit() { let renderer = this.renderer; let nativeElement = this.el.nativeElement; let animate: string = this.animate ? "yes" : "no"; renderer.setElementAttribute(nativeElement,"data-gs-width",String(this.w)); if(animate == "yes") { renderer.setElementAttribute(nativeElement,"data-gs-animate",animate); } let options = { cellHeight: 80,verticalMargin: 10 }; // Todo: listen to an event here instead of just waiting for the time to expire setTimeout(function () { $('.grid-stack').gridstack(options); },300); } }
在我使用该指令的html中(index.html,请注意我没有与@directive本身关联的任何模板,我可以包含点击事件吗?:
<div gridStack> <div><a (click)="clickEvent()">Click Here</a></div> </div>
我知道如果它是一个组件,这是有效的,但我希望尝试让它使用指令,如果可能的话.
解决方法
您可以通过指令定义中的HostListener装饰器附加到click事件.
@HostListener('click',['$event']) onClick($event){ console.info('clicked: ' + $event); }
请参阅Angular docs here
以及this question的更多信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。