[英]Angular2: Directive loads, but does nothing
編輯:我發現了問題。 您知道結果如何嗎? 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
控件不會觸發這些內容嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.