【发布时间】:2019-07-15 07:55:23
【问题描述】:
我正在尝试操作输入中的值,因为我想从中提取超出所需长度的值。
在此示例中,我想保留 3 个字符并提取其余字符。为此,我使用了(ngModelChange) 和[ngModel]。
html
<input type="text"
[ngModel]="value"
(ngModelChange)="onChange($event)">
ts
onChange(e: string) {
if (e.length > 3) {
this.value= e.substring(0, 3);
this.input.nativeElement.value = this.value;
}
}
它工作一次,但如果我继续更改输入,我可以输入更多字符并且输入值不再更新。 为什么会这样?为什么输入中的value 不再更新?
我使用nativeElement 解决了。但我仍然想知道为什么它不适用于[ngModel]。
我在stackblitz上复制了它
【问题讨论】:
-
我想你忘了加圆括号 [(ngModel)]="value"
-
我拆分了 ngModel,因为我只想使用一次
ngModelChange。因为ngModel是[ngModel]="value" (ngModelChange)="value = $event"的简化方式。 -
您希望用户输入值并限制进一步输入吗?查看自定义指令。您可以制定一个指令,让用户输入超过 3 个字符。
-
这是一个有趣的行为。如果你找到了,请提出解决方案。
-
为什么不在你的 html 上使用输入限制?
maxLength="X"可以用来防止用户输入更多内容
标签: angular angular-ngmodel angular-forms