使用 Angular2 启用/禁用复选框字段

Posted

技术标签:

【中文标题】使用 Angular2 启用/禁用复选框字段【英文标题】:Enabling/Disabling checkbox field with Angular2 【发布时间】:2017-04-20 17:23:16 【问题描述】:

我正在动态呈现复选框和组合框字段并执行以下功能:

    根据 API 响应,如果复选框字段显示为选中,则组合框显示为启用,否则将被禁用。 如果用户选择复选框字段,则应启用组合框,否则禁用

组合框字段适用于第一种情况,但不适用于第二种情况。状态(启用或禁用)以后不能更改。

这是我的模板 sn-p:

 < tr *ngFor="let widgetAttribute of _preferencesWidget">

 < td *ngFor="let subattribute of widgetAttribute.methods">

 < select *ngIf="subattribute.name == 'Email' && subattribute.type == 'LIST'" id="subattribute.nameCheck" class="selectpicker" data-max-options="1" (change)="validateCombo($event)"
                                                            [disabled]="!subattribute.enabled">
                                                                <option *ngFor="let subValue of subattribute.values" value="subValue.code" [selected]="subValue.code == subattribute.selected">subValue.description< /option>
                                                            < /select>
 < /td>
< /tr>

checkbox 生成的 id 是:InformationCheck,combobox 是:pensionMCheck

我的组件逻辑是:

 public validateCombo() 

     if (this.pensionCheck) 
         $('#pensionMCheck').prop('disabled', false);
         if ($('#pensionMCheck').val() === 'Y') 
             this.pensionMCheck = true;
          else 
             this.pensionMCheck = false;
         
     else 
         this.pensionMCheck = false;
         $('#pensionMCheck').val('N');
         $('#pensionMCheck').prop('disabled', true);
         $('#pensionMCheck').prop('selectedIndex', 0);
    

【问题讨论】:

【参考方案1】:

将复选框状态绑定到属性 (isChecked) 并将 enabled&lt;select&gt; 绑定到同一属性:

<input type="checkbox" [(ngModel)]="isChecked">
<select [(ngModel)]="selectedItem" [enabled]="!isChecked"

【讨论】:

我能够解决它。代码运行良好,唯一的问题是 DOM 树中存在重复元素。 什么重复元素?你的意思是多个选择元素?会导致什么问题? 不,一个元素动态获取的 ID 与另一个元素重复。 你在说id="subattribute.nameCheck"吗? 我不知道。如果name 对于每个`子属性都不同,则不应有重复。

以上是关于使用 Angular2 启用/禁用复选框字段的主要内容,如果未能解决你的问题,请参考以下文章

如果选中任一复选框,则启用和禁用文本字段

angular2中带有多个单选按钮的多复选框?

如何根据 Reactstrap 的复选框启用/禁用输入字段

如何根据复选框状态禁用/启用提交按钮?

在其他文本输入字段中输入文本时启用复选框

Rails 4:如何在 Rails 中使用 JQuery 禁用基于复选框值的文本字段