如果选中一个复选框,则选中并禁用其他复选框Angular

时间:2020-05-16 13:47:56

标签: typescript checkbox angular8 angular-reactive-forms

选中key1复选框后,我要选中并禁用key2复选框

HTMLcode

<input class="form-check-input" type="checkbox" formControlName="key1" id="key1" (click)="key1Click()">
            <label for="key1" class="form-check-label">Key 1</label>
            <input class="form-check-input" formControlName="key2" type="checkbox" id="key2">
            <label for="key2" class="form-check-label">Key 2</label>

复选框的打字稿代码

keyClick() {

let x = <HTMLInputElement>document.getElementById("key1");
let y = <HTMLInputElement>document.getElementById("key2");
if (x.checked) {
  y.checked = true;
  y.disabled = true;
}
else {
  y.checked = false;
  y.disabled = false;
}

}

通过使用此代码,key2复选框被选中并禁用。 但是key2复选框的布尔值仍然为false。 单击“ key1”复选框时如何将“ key2”复选框的布尔值更改为true的任何建议 我正在使用Angular 8及其反应形式模块。我是angular的新手。

1 个答案:

答案 0 :(得分:0)

您可以订阅第一个复选框的valueChanges观察对象,即key1

演示代码段:

this.formName.get("key1").valueChanges.subscribe(val=>{
    if(val)
    //enable the second checkbox
    else 
    //disable the second checkbox
});

其中 formName 是您的反应式表单的名称。 另外,别忘了在组件销毁时取消订阅此可观察项。