Angular2 +为Input事件创建HostListener

时间:2018-12-03 20:40:50

标签: angular angular-directive

注意::我知道如何使用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(){        
  }

}

谢谢。

0 个答案:

没有答案