cod*_*bot 4 forms angular angular-reactive-forms angular6
我正在使用角度6
我的HTML是
<form [formGroup]="myForm" >
<label>
<input type="text" formControlName="name" placeholder="name" required autofocus >
</label>
<label>
<select name="drop" formControlName="drop">
<option value="developer"selected >developer</option>
<option value="designer">designer</option>
<option value="admin">admin</option>
</select>
</label>
</form>
Run Code Online (Sandbox Code Playgroud)
即使我selected
在option
页面首次加载时在“开发人员”中进行设置,也未选择“开发人员”。我想这是一个小角度的错误,无法正确呈现html,因此我在定义表单时放入了组件:
myForm = this.formBuilder.group({
name:['',Validators.required],
drop:['developer']
});
Run Code Online (Sandbox Code Playgroud)
而且有效。
真正奇怪的是,当我this.myForm.reset();
在另一个位于窗体外部的按钮内执行操作时,“名称”应为空,但下拉列表也完全为空,只是空白,但应显示“ developer”,对吗?
该按钮隐藏了一些元素,应该重置表单,它在表单外部并且确实
getOtherData(id){
this.myForm.reset();
Run Code Online (Sandbox Code Playgroud)
这行不通,所以我必须做
this.myForm.setValue({
name: '',
drop: 'developer'
});
Run Code Online (Sandbox Code Playgroud)
为了实际重置表格。这是怎么错的select
用组合reset
?我想使用reset
一次并完全重置表单,而不会出现“ hacks”,该怎么办?
谢谢
真正奇怪的是,当我这样做时
this.myForm.reset()
;在另一个位于表单外部的按钮中,"name"
则应为空,但下拉菜单也完全为空,只是空白,但应显示"developer"
,对不对?
不,不应该。我们打电话时会reset()
怎样?最重要的是,它将所有值设置为null
。
在您的选择中,您要选择的字段具有值"developer"
,因此当然不会设置该值,因为您刚刚将值重置为null
,即
null === 'developer' // false!
Run Code Online (Sandbox Code Playgroud)
这是一个Angular表单,因此Angular确实不在乎HTML属性(在本例中为selected
),而是侦听表单控件及其中发生的事情。因此,您需要做的是使用所需的值重置表单,为此您可以在上提供值reset
:
this.myForm.reset({
name: '',
drop: 'developer'
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3017 次 |
最近记录: |