2016-11-10 28 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> 

回答

相關問題