簡體   English   中英

Angular2:指令加載,但不執行任何操作

[英]Angular2: Directive loads, but does nothing

編輯:我發現了問題。 您知道結果如何嗎? chrome緩存問題。 Chrome緩存了一些內容,直到在打開調試器並顯式刷新頁面的同時關閉緩存,我還是一無所獲。 刷新后,我開始捕獲事件。

原始帖子:我有一個自定義Angular指令,該指令應在以下三個事件中的任何一個上對控件起作用: onloadonbluronfocus 它應用於input控件,可以禁用也可以不禁用。 我知道onbluronfocus在禁用的控件上沒有用,但是我認為偵聽從未出現的事件不會有任何危害。 另一方面,已啟用的控件將觸發這些事件,因此我需要監聽。 該偽指令設計得相當通用,因此需要處理禁用和啟用的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控件不會觸發這些內容嗎?

onLoad將不起作用,因為它是窗口事件而不是表單事件

以下是可為表單元素處理的事件列表

onblur  
onchange
oncontextmenu   
onfocus 
oninput 
oninvalid   
onreset 
onsearch
onselect
onsubmit

您已從本文檔中參考了基於注釋的更新

如您所料,MDN鏈接在此處支持上述答案

在此處輸入圖片說明

資源事件是指Internet中的資源,例如Web URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM