【发布时间】:2019-11-14 17:26:21
【问题描述】:
我尝试将keyup 事件绑定到属性指令内的输入元素。
我已经尝试过像element.nativeElement.onkeyup 或element.nativeElement.addEventListener('keyup', () => {}) 这样的正常方式,但是当我输入时,什么也没有发生。
现在,我尝试使用HostListener 编写这样的代码
@HostListener('keyup', ['$event']) onKeyup(e) {}
更新
事实证明,@HostListener 必须是顶级才能工作。但是,当我输入输入时,什么也没有发生。这是指令的完整代码。
import { Directive, ElementRef, OnInit, HostListener } from '@angular/core';
@Directive({
selector: '[appKeyUp]'
})
export class KeyUpDirective implements OnInit {
constructor(private el: ElementRef) { }
ngOnInit() {
console.log('directive initiated');
}
@HostListener('keyup', [$event]) onKeyUp(e) {
console.log(e);
}
}
这次出了什么问题?
【问题讨论】:
-
如果您仍然遇到问题,请发布您编写的指令的所有代码。信息越多越好
-
指令是否在与您使用它的组件相同的模块中正确声明?或者你忘了导出指令?
-
实际上,它是在我跨应用程序使用的共享模块上声明和导出的,该模块具有多个延迟加载模块。为了确定,我已经验证了 3 次。
-
如果你在正确的地方标记了指令并且用
["$event"]包围了$event,你的代码就可以正常工作。请提供minimal reproducible example,最好是stackblitz。
标签: angular angular2-directives