【问题标题】:How to keep input disabled when the checkbox is unchecked using angular8使用角度8取消选中复选框时如何保持输入禁用
【发布时间】:2023-03-12 21:20:01
【问题描述】:

我在 Angular8 中使用响应式表单进行表单绑定。在这里,最初表单是禁用的,当我点击编辑按钮时,表单是启用的,但是在这里,只有在选中复选框时才应该启用输入,或者应该禁用它。

Ts:

 edit() {
    this.form.enable()
  }
  restrict() {
      this.form = this.FB.group({
      array: this.FB.array(
        this.values.map(x => this.FB.group({
          boolValue: this.FB.control(x.boolValue),
          datetime: [
          { value:x.datetime, disabled: !x.boolValue }]
        }))
      )
    });    
     this.form.valueChanges.subscribe(data => {
          this.formEdit = true;
          console.log('agentSettingsInfoForm', data,this.formEdit)
        })
     this.w9InfoDetails.valueChanges.subscribe(data => {
        this.formEdit = true;
          console.log('agentSettingsInfoFormdate', data,this.formEdit)
     }) 
  }

DEMO

【问题讨论】:

    标签: javascript angular


    【解决方案1】:

    在 stackblitz 示例中调整了您的代码,这里是您需要进行的更改才能实现您的期望。

    将整个表单包裹在 <fieldset> 中,并默认将其设置为禁用。

    <fieldset [disabled]="disabled">
     <form [formGroup]= "form" (submit)="onSubmit()">
      ......
    

    在组件中将默认值分配给disabled

    disabled = true; // set default disabled true
    form: FormGroup;    
    selected: string[] = [];
    ......
    

    从 ngOnInit 中移除表单禁用

     ngOnInit() {
      this.restrict();
      // this.form.disable() <== remove it
     }   
    

    最后在edit方法中设置disabled false

      edit() {
       this.disabled = false;
       // this.form.enable() <== remove this
      }
    

    这是 stackblitz DEMO 我更新了你的代码

    希望这能解决您的问题。

    【讨论】:

    • 感谢您的回复,当我点击编辑按钮时,复选框应该被启用,如果复选框被选中,那么只有日期字段可以编辑
    • @Bhrungarajni 我已经更新了我的答案,现在检查 stackblitz,将 restrict() 方法更改为您所拥有的。
    • 感谢您的反馈,它正在按照我的预期工作
    猜你喜欢
    • 2021-03-09
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多