2017-07-07 57 views
0

我有textarea。我嘗試將值的寬度限制爲10個符號。我正試圖削減input事件的價值。角度:改變輸入事件的值

<textarea [(ngModel)]="smsMessage" (input)="changeSMSMessage()"></textarea> 

changeSMSMessage() { 
    this.smsMessage = this.smsMessage.substr(0, 10); 
    console.log(this.smsMessage); 
} 

但它不起作用。我發現價值在changeSMSMessage()方法中被削減,但在UI上我看不到價值改變。
Plunker

當我改變事件從inputkeyup,它正常啓動工作。十分之後的所有字符都被刪除。

那麼,有人可以解釋爲什麼input事件不會更新textarea的值嗎?

+2

這樣做的後果是什麼?您可以直接使用'maxlength =「10」'屬性,這將不允許用戶鍵入超過10個符號 – mayur

+0

我必須顯示彈出消息「SMS長度大於250」。在例子中,我刪除了該代碼。 –

+0

我想你應該試試(oninput) – ArunGeorge

回答

2

您有幾種選擇:

1 - 使用文本區域的maxlength="10"標籤:

<textarea [(ngModel)]="smsMessage" maxlength="10"></textarea> 

2 - 使用reactive form controlbuilt-in validator

3 - 控制輸入:

<textarea [(ngModel)]="smsMessage" (change)="changeSMSMessage()"></textarea> 


// TS 
changeSMSMessage() { 
    this.smsMessage = this.smsMessage.length > 10 ? this.smsMessage.substr(0, 10), this.smsMessage; 
} 
+0

Woops,忘了更改屬性綁定!抱歉。 – trichetriche

+0

1)我不能使用'maxlength =「10」'因爲我需要顯示帶有錯誤信息的彈出窗口。 2)我會閱讀這篇文章。謝謝3)'(更改)'不起作用。我在Plunker中改變了事件,但它仍然沒有削減smsMessage的寬度。 –

+0

然後使用'keypress' – trichetriche