2016-11-10 82 views
1

我不认为这是可能的,但我更喜欢问(以防万一):是否有可能做这样的事情:Angular2 - HostListener是否可以使用变量字符串?

@Directive({ 
    selector: '[appTag]' 
}) 
export class TagDirective { 
    @Input() appTag: TagEvent; 

    private _tagTriggerEvent = 'click'; 
    @Input() set tagTriggerEvent(triggerEvent: string) { 
    this._tagTriggerEvent = triggerEvent || this._tagTriggerEvent; 
    } 

    constructor(private el: ElementRef, private renderer: Renderer) { 
    } 

    @HostListener(this._tagTriggerEvent) onTriggerEvent() { 
    if (this.appTag) { 
     this.sendTag(this.appTag); 
    } 
    } 

    sendTag(tagParam: TagEvent) { 
    ... 
    } 

} 

,并调用它像:

<div [appTag]="myTagParam">Watch for click on this div</div> 
<div [appTag]="myTagParam" [tagTriggerEvent]="mouseenter">Watch for mouseenter on this div</div> 

回答

相关问题