-1

我已经知道 a 中input的项目FormControl可以被标记dirttouched通过调用以下任何方法(可能更多): group.markAsTouched(); form.get('control-name').markAsTouched(); form.markAllAsTouched(); form.controls[someIndex].markAsTouched();

但是,我可以看到当输入为thenmarkAsTouched时似乎调用了该​​方法。focusblur

有没有办法通过代码实现相同的结果?可以说,当单击一个按钮时。


在这里,您可以看到没有表单的当前标准行为的 gif 图像,您也可以在以下实时示例中自行测试:

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

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

像这样的东西:

<input #myInput>
<button (click)="myInput.markAsTouched()">click</button>
4

1 回答 1

3

您可以使用独特的 formControl<input [formControl]="control">markAsTouched

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

你在哪里.ts

// as a property
control = new FormControl();

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

AFormControl可以属于FormGroup或不属于a。此外,没有必要有一个标签input。我们正在使用标签输入来更改值,但是如果您删除input,该控件也会被标记为已触摸

于 2020-01-23T21:36:47.417 回答