Angular 如果选中“任意位置”选项,则清除复选框

Angular 如果选中“任意位置”选项,则清除复选框,angular,checkbox,Angular,Checkbox,如果我使用Angular选择世界上任何地方的选项,我想取消选中除世界上任何地方的选项之外的所有复选框。我已经研究了很多方法,但没有一种适合我的解决方案。最简单的方法是什么 <div class="form-row"> <div class="col-md-12 mb-3"> <label for="targetMarket" style="font-size: 17px"> What is/are your curre

如果我使用Angular选择世界上任何地方的选项,我想取消选中除世界上任何地方的选项之外的所有复选框。我已经研究了很多方法,但没有一种适合我的解决方案。最简单的方法是什么

<div class="form-row">
   <div class="col-md-12 mb-3">
       <label for="targetMarket" style="font-size: 17px">
           What is/are your current/proposed target market(s)?
       </label>
       <div class="form-check">
           <label class="checkbox-inline">
               <input type="checkbox" class="checkbox" name="southAsia" value="1" #southAsiaChk
                   (change)="onCheckArray($event, Form.value.targetMarket)">
                        South Asia
           </label>
       </div>
       <div class="form-check">
           <label class="checkbox-inline">
               <input type="checkbox" class="checkbox" name="northAsia" value="2" #northAsiaChk
                   (change)="onCheckArray($event, Form.value.targetMarket)">
                        North Asia
           </label>
       </div>
       <div class="form-check">
           <label class="checkbox-inline">
               <input type="checkbox" class="checkbox" name="oceania" value="3" #oceaniaChk
                   (change)="onCheckArray($event, Form.value.targetMarket)">
                        Australia/New Zealand
           </label>
        </div>
        <div class="form-check">
            <label class="checkbox-inline">
                <input type="checkbox" id="anywhere" class="checkbox" name="anywhere" value="9" #anywhereChk
                    (change)="onCheckArray($event, Form.value.targetMarket)" (click)="uncheckRegions()">
                        Anywhere in the world
            </label>
         </div>
    </div>
</div>

有两种方法:

第一个是添加一个状态,并使用[ngModel]更新复选框选中的状态

我不是在制作一个新的,而是在使用我改进过的现有演示之一

代码:

this.data.forEachx=>{x.state=ev.target.checked;}

请注意,this.data是一个数组,其中包含绑定到示例中[ngModel][ngModel]=content.state的状态

第二个是手动检测:

两者几乎相同,即选中或取消选中所有内容。不同之处在于我添加了一个条件,允许任何地方都被排除在取消选中之外。如果使用第一种方法,您也可以轻松实现

代码:

更新:

要防止在取消选中anywhere时取消选中,您可以使用以获取anywhere选中状态: @查看儿童“anywhere”任意位置

然后添加一个附加条件:

if (res.attributes[2].value != 'anywhere' && this.anywhere.nativeElement.checked==true) {
    res.checked = false;
}

非常感谢。它工作得很好。但是,如果我取消选中anywhere选项,它不应该影响任何内容,而是也会取消选中所有内容。我怎么才能解决这个问题呢?如果你知道任何地方都是你能做的最后一个输入:input[input.length-1]。checked==true,请参见。或者您可以找到anywhere输入并检查其状态。@mhfour请查看anywhere上未受影响的所有内容的更新,直到感谢!现在可以了。一个问题:res.attributes[2].value的含义是什么?为什么括号中有一个2?输入是一个集合,每个集合都有一个2,并且[2]指的是input.attributes的第二个索引。您可以使用console.logres检查live,有关更多详细信息,请参阅我链接的文档。
if (res.attributes[2].value != 'anywhere' && this.anywhere.nativeElement.checked==true) {
    res.checked = false;
}