【问题标题】:Angular4+ ReactiveForms disable and enable a controlAngular4+ ReactiveForms 禁用和启用控件
【发布时间】:2019-03-16 13:35:56
【问题描述】:

我有如下表格

<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>  

所有控件都是必需的。当用户选择 opt1 时,我想禁用 inputField 并设置值“某物”。如果选择 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 并且提交按钮被禁用时。 谢谢。

【问题讨论】:

    标签: angular angular-reactive-forms


    【解决方案1】:

    您必须在 inputField 控件上按条件添加“必需”。

    <input type="text" formControlName="inputField" [required]="form.get('selectList').value == 'opt1' ? true : null"/> 
    

    这种方式只有在选择opt1时才需要inputField。

    希望这对你有用。

    【讨论】:

      【解决方案2】:

      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();
          }
      }
      

      【讨论】:

      • 嗨,对不起,我把 setValue 当作方法而不是属性使用,但我在这里写错了。解决方案不起作用。谢谢。
      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多