Angular 6反应形式输入值到大写

AKA*_*ASH 0 javascript angular angular-reactive-forms

我在Angular 6中使用了反应形式。对于输入类型的文本,我希望它是大写的。我尝试了解决方案

(input)="form.patchValue({name: $event.target.value.toUpperCase()})"
Run Code Online (Sandbox Code Playgroud)

该解决方案工作正常,但是当我将光标移到中间并键入一个字符时,唯一的问题是光标移到末尾。

还有其他方法或更好的解决方案吗?

Ser*_*lov 8

你可以试试这个:

const yourControl = this.form.get('yourControlName');
yourControl.valueChanges.subscribe(() => {
  yourControl.patchValue(yourControl.value.toUpperCase(), {emitEvent: false});
});
Run Code Online (Sandbox Code Playgroud)


Bor*_*han 6

您为什么不只使用CSS来完成这项工作?

.uppercase{
  text-transform: uppercase;
}
Run Code Online (Sandbox Code Playgroud)
<input class="uppercase" type="text" placeholder="type here">
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这可行,但是模型值仍然是小写。 (2认同)
  • 在这种情况下,您可以使用 (change) 事件而不是 (input) 样式 text-transform: uppercase 来直观地查看输入视图中的大写字母。当输入字段失去焦点时,模型将是大写的。我在这里重现了这个问题 https://stackblitz.com/edit/angular-zitpkn (2认同)