Angular,有没有办法“ markAsTouched”没有表单的字段?

问题描述 投票:-4回答:1

我已经知道通过调用以下任何一种方法(可能更多),可以将FormControl中的INPUT项目标记为dirttouchedcontrol.markAsTouched(); group.markAsTouched(); form.get('control-name').markAsTouched(); form.markAllAsTouched(); form.controls[someIndex].markAsTouched();

但是我看到markAsTouched方法似乎在输入为focus然后是blur时被调用。

是否可以通过单击按钮来达到相同的结果?


在这里您可以看到current standard behaviour without a form,也可以在以下实时示例中对其进行测试:

https://stackblitz.com/edit/angular-peq11f

对我来说,很明显,这种行为应该可以被代码触发,而不仅是在触发blur事件时

类似这样的东西:

<input #myInput>
<button (click)="myInput.markAsTouched()">click</button>
angular angular2-forms angular2-formbuilder angular2-form-validation ignite-ui-angular
1个回答
1
投票

路易斯,您可以使用唯一的formControl <input [formControl]="control">和markAsTouched

<input [formControl]="control">
<button (click)="control.markAsTouched()">click</button>
{{control.touched}}

。ts中的位置

  control=new FormControl()

  //or in a function
  this.control.markAsTouched()

FormControl可以属于或不属于FormGroup。此外,不必输入标签。我们正在使用标记输入来更改值,但是如果您删除输入,则控件也会被标记为已触摸]

© www.soinside.com 2019 - 2024. All rights reserved.