Angular中valueChanges返回布尔数组,如何反转值切换单多选框?
解决单个与多个复选框状态互斥切换问题
你当前的核心问题是:DOList的valueChanges返回的是数组类型(未勾选时为[false],勾选时为[true]),直接对数组使用!bool的话,因为数组本身属于JavaScript中的"真值",无论内部元素是true还是false,!bool都会得到false,所以达不到反转状态的效果。
正确的实现方式是先取出数组中的实际布尔值,再对该值取反,代码修改如下:
this.form.get('DOList').valueChanges.subscribe((boolArr) => { const isDOListChecked = boolArr[0]; this.form.get('DOWList').patchValue(Array(this.DOWList.length).fill(!isDOListChecked), { emitEvent: false, }); });
这里把参数名改为boolArr是为了更直观地体现它的数组类型,通过boolArr[0]拿到单个复选框的真实状态,取反后填充到DOWList的数组中,就能实现两个复选框组的状态互斥切换。
内容的提问来源于stack exchange,提问作者Mitul Panchal
相关产品推荐
相关产品推荐

