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

时间:2018-10-12 05:35:52

标签: javascript angular angular-reactive-forms

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

(input)="form.patchValue({name: $event.target.value.toUpperCase()})"

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

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

3 个答案:

答案 0 :(得分:3)

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

.uppercase{
  text-transform: uppercase;
}
<input class="uppercase" type="text" placeholder="type here">

答案 1 :(得分:3)

您可以尝试以下方法:

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

答案 2 :(得分:0)

我知道这已经晚了,但是...

您可以挂钩(更改)事件而不是(输入)事件。直到用户离开该字段后,您的案例更改才会执行,但这将防止光标跳动。

如果用户在字段中按Enter提交表单,则案例更改仍将执行。