2017-08-01 50 views
2

角4更改事件工作範圍是工作的罰款與如下面變化事件沒有在角4

<input type="text" (change)="updateData($event)"/> 

但是當我們如下寫代碼然後但這並沒有工作,輸入型文本。

<span id="fname" (change)="updateData($event)"></span> 

誰能給我垃圾洞察力的這種行爲,如果可能的話,最好的方式來達到同樣的。

+4

您如何期待非交互式元素觸發'change'事件?只有在用戶的輸入發生變化時纔會觸發更改事件。例如,在輸入元素中輸入內容。 – cyrix

+0

我爲span做了contenteditable =「true」。 –

+0

什麼阻止你使用輸入?你試圖在一個可憐的小「span」元素上強制執行一些功能,而這並不是爲了這麼強大的任務。 – cyrix

回答

4

對於contenteditable您需要使用input事件。 Here is什麼文件說:同步時 的值,或有修改

的DOM輸入事件被觸發......此外,它觸發對CONTENTEDITABLE編輯當 其內容被改變。在這種情況下,事件的目標是 編輯host元素...

input但是被觸發的每個變化,而change被觸發focusout,所以你需要結合這些。

class Component { 
    tmp = ''l 

    updateTmpData(e) { 
    this.tmp = e.target.textContent; 
    } 

    updateData() { 
    // use this.tmp 
    } 
} 

... 
<span id="fname" (input)="updateTmpData(e)" (focusout)="updateData()"></span> 
+0

的替代品,我們使用了一些什麼相同的解決方案,你已經通過比較新舊值建議。只是想知道如果有更好的方法。

+0

爲什麼要聽點擊事件? –

+0

我們也可以使用focusin事件,我想要使​​用輸入事件,因爲我不想在每個字符輸入上發送數據。 –