Angular,有没有办法 "markAsTouched" 没有表单的字段?
Angular, is there a way to "markAsTouched" a field without a Form?
我已经知道 FormControl
中的 input
项可以通过调用以下任何方法(可能更多)标记为 dirt
或 touched
: group.markAsTouched(); form.get('control-name').markAsTouched(); form.markAllAsTouched(); form.controls[someIndex].markAsTouched();
但是,我可以看到当输入focus
然后blur
.
时似乎调用了markAsTouched
方法
有没有办法通过代码实现相同的结果?? 比方说,当点击一个按钮时。
在这里,你可以看到the current standard behaviour without a form的动图,你也可以在下面的live sample中自己测试一下:
https://stackblitz.com/edit/angular-peq11f
对我来说,很明显这种行为应该可以由代码触发,而不仅仅是在 blur
事件被触发时
像这样:
<input #myInput>
<button (click)="myInput.markAsTouched()">click</button>
您可以使用独特的 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();
一个FormControl
可以属于一个FormGroup
也可以不属于。此外,没有必要有标签 input
。我们正在使用标签输入来更改值,但是如果您删除 input
,控件也会标记为已触摸
我已经知道 FormControl
中的 input
项可以通过调用以下任何方法(可能更多)标记为 dirt
或 touched
: group.markAsTouched(); form.get('control-name').markAsTouched(); form.markAllAsTouched(); form.controls[someIndex].markAsTouched();
但是,我可以看到当输入focus
然后blur
.
markAsTouched
方法
有没有办法通过代码实现相同的结果?? 比方说,当点击一个按钮时。
在这里,你可以看到the current standard behaviour without a form的动图,你也可以在下面的live sample中自己测试一下:
https://stackblitz.com/edit/angular-peq11f
对我来说,很明显这种行为应该可以由代码触发,而不仅仅是在 blur
事件被触发时
像这样:
<input #myInput>
<button (click)="myInput.markAsTouched()">click</button>
您可以使用独特的 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();
一个FormControl
可以属于一个FormGroup
也可以不属于。此外,没有必要有标签 input
。我们正在使用标签输入来更改值,但是如果您删除 input
,控件也会标记为已触摸