Angular4+ ReactiveForms 禁用和启用控件
Angular4+ ReactiveForms disable and enable a control
我有如下表格
<form [formGroup]="form">
<select formControlName='selectList' (selectionChange)="onSelectChange($event)">
<option value='opt1'>Opt-1</Option>
<option value='opt2'>Opt-2</Option>
</select>
<input type='text' formControlName='inputField'/>
<button [disabled]="!form.valid">Save</button>
</form>
需要所有控件。当用户 select opt1 时,我想禁用 inputField 并设置值 'something'。如果select opt2 启用inputField 并设置值为null。
onSelectChange(e){
if(e==opt1){
form.controls.inputField.setValue='something';
form.controls.inputField.disable();
}else{
form.controls.inputField.setValue=null;
form.controls.inputField.enable();
}
}
启用控件没问题,但是当我设置禁用控件时 inputField.valid=false
并且提交按钮被禁用。
谢谢
您必须在您的 inputField 控件上有条件地添加 "required"。
<input type="text" formControlName="inputField" [required]="form.get('selectList').value == 'opt1' ? true : null"/>
这样只有在选择 opt1 时才需要 inputField。
希望这对你有用。
setValue
是一种方法,不是 属性 只需更改为此
onSelectChange(e){
if(e==opt1){
form.controls.inputField.setValue='something';
form.controls.inputField.disable();
}else{
form.controls.inputField.setValue(null);
form.controls.inputField.enable();
}
}
我有如下表格
<form [formGroup]="form">
<select formControlName='selectList' (selectionChange)="onSelectChange($event)">
<option value='opt1'>Opt-1</Option>
<option value='opt2'>Opt-2</Option>
</select>
<input type='text' formControlName='inputField'/>
<button [disabled]="!form.valid">Save</button>
</form>
需要所有控件。当用户 select opt1 时,我想禁用 inputField 并设置值 'something'。如果select opt2 启用inputField 并设置值为null。
onSelectChange(e){
if(e==opt1){
form.controls.inputField.setValue='something';
form.controls.inputField.disable();
}else{
form.controls.inputField.setValue=null;
form.controls.inputField.enable();
}
}
启用控件没问题,但是当我设置禁用控件时 inputField.valid=false
并且提交按钮被禁用。
谢谢
您必须在您的 inputField 控件上有条件地添加 "required"。
<input type="text" formControlName="inputField" [required]="form.get('selectList').value == 'opt1' ? true : null"/>
这样只有在选择 opt1 时才需要 inputField。
希望这对你有用。
setValue
是一种方法,不是 属性 只需更改为此
onSelectChange(e){
if(e==opt1){
form.controls.inputField.setValue='something';
form.controls.inputField.disable();
}else{
form.controls.inputField.setValue(null);
form.controls.inputField.enable();
}
}