Примечание: Я знаю, как это сделать, используя ElementRef
, поэтому, пожалуйста, сконцентрируйтесь на том, как это сделать, используя HostListener
, если это возможно.
Я хочу создать StopPropagationDirective
который получает eventName
я хочу остановить распространение.Проблема в том, что это eventName
происходит от свойства @Input
, а
@HostListener(this.eventName, ['$event'])
не находит this.eventName
на данный момент.Ошибка:
Uncaught TypeError: Cannot read property 'eventName' of undefined
Я попытался определить this.eventName= 'click'
внутри constructor
и OnInit
безрезультатно.
Здесь код:
import {Directive, ElementRef, HostListener, Input, OnInit} from '@angular/core';
@Directive({
selector: '[appStopPropagation]'
})
export class StopPropagationDirective implements OnInit{
constructor() {
}
@Input('appStopPropagation') eventName: string = 'click';
@HostListener(this.eventName, ['$event']) onEvent($event){
$event.stopPropagation();
}
ngOnInit(){
}
}
Заранее спасибо.