编辑:我发现了问题。你知道结果是什么吗? Chrome缓存问题。 Chrome缓存了一些东西,直到我在调试器打开并关闭我的页面时关闭了缓存,我无处可去。一旦我精神焕发,我开始抓住事件。
原帖:
我有一个自定义Angular指令,它应该对三个事件中的任何一个进行控制:onload
,onblur
或onfocus
。它适用于input
控件,可以禁用也可以不禁用。我知道onblur
和onfocus
在禁用控件上没用,但我想在听取从未出现的事件时没有任何害处。另一方面,启用的控件将触发这些事件,因此我需要倾听。该指令设计得相当通用,因此它需要处理禁用和启用input
控件。
问题是,它什么也没做。至少,它似乎没有做任何事情。该指令被实例化 - 我已经验证构造函数已经启动,并且我已经验证elementRef
指向输入控件 - 但这就是它。没有听众工作。
用法:
<input myDirective disabled id="someId" name="someName" [ngModel]="myValue" />
指令:
import { Directive, HostListener, ElementRef, Input } from "@angular/core";
@Directive({ selector: "[myDirective]" })
export class MyDirective {
constructor(private elementRef: ElementRef) {
}
@HostListener("focus", ["$event.target.value"])
onFocus(value: string) {
console.log("MyDirective: Focus caught.");
}
@HostListener("blur", ["$event.target.value"])
onBlur(value: number) {
console.log("MyDirective: Blur caught.");
}
@HostListener("load", ["$event.target.value"])
onLoad() {
console.log("MyDirective: Load caught.");
}
}
当我运行所有东西时,它会很好地加载。没有丢失模块,缺少组件等问题。控制台中没有错误。正如我之前提到的,即使使用调试器进入代码,也会验证指令是否已实例化。但我也没有控制台输出。我至少会期待onload
事件。禁用的input
控件是否会触发那些什么?
答案 0 :(得分:1)
onLoad
无效,因为它是一个窗口事件,而不是表单事件
以下是可以为表单元素处理的事件列表
onblur
onchange
oncontextmenu
onfocus
oninput
oninvalid
onreset
onsearch
onselect
onsubmit
您已从此documentation引用它 根据评论更新
正如您所期望的MDN链接支持上述答案 here it is
资源事件是指互联网中的资源,例如网址。