除非用户使用capslock和shift键,否则在使用css自动初始化必填字段时,Angular 7被动表单始终无效

除非用户使用capslock和shift键,否则在使用css自动初始化必填字段时,Angular 7被动表单始终无效,angular,angular6,angular-reactive-forms,angular7,Angular,Angular6,Angular Reactive Forms,Angular7,我有以下输入,它应该自动大写字母A、B和C,而不允许用户使用capslock或shift+字母 输入在反应形式内: SignupForm: FormGroup; ngOnInit(){ this.SignupForm = new FormGroup({ 'username': new FormControl('', Validators.pattern('[A-C ]*')) }); } 这是html表单: <div class="container"&g

我有以下输入,它应该自动大写字母A、B和C,而不允许用户使用capslock或shift+字母

输入在反应形式内:

SignupForm: FormGroup;
  ngOnInit(){
    this.SignupForm = new FormGroup({
      'username': new FormControl('', Validators.pattern('[A-C ]*'))
    });
}
这是html表单:

<div class="container">
  <div class="row">
    <div class="col-xs-12 col-sm-10 col-md-8 col-md-offset-2 col-sm-offset-1">
      <form [formGroup]="SignupForm">
             <label for="username">UserName</label>
             <input type="text" class="form-control autoCapitalise"
              id="username" formControlName = "username">
              {{SignupForm.controls.username.error || JSON}}
      </form>
    </div>
  </div>
</div>
现在,当用户键入几个字母时,autocapitalize正在工作,但表单仍然无效,直到用户再次使用capslock或shift键

下面是一个更好地描述问题的示例

-autocapitalize属性不会影响在物理键盘上键入时的行为

每次用户输入值时,您都可以根据值更改来更改该值。任何值都将更改为大写

this.SignupForm.get('username').valueChanges
.pipe(distinct())
  .subscribe(value => {
    this.SignupForm.get('username').setValue(value.toUpperCase());
  })

this.SignupForm.get('username').valueChanges
.pipe(distinct())
  .subscribe(value => {
    this.SignupForm.get('username').setValue(value.toUpperCase());
  })