Angular2 + создать HostListener для события ввода - PullRequest
0 голосов
/ 03 декабря 2018

Примечание: Я знаю, как это сделать, используя 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(){        
  }

}

Заранее спасибо.

...