2017-07-07 58 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