14

我的html代码,

<div>
  <div>
   <input type="checkbox" id="Checkbox0" name="cCheckbox0" class="custom-control-input" (change)="checkSelected(checkBox[0].label)">
   <label class="label" for="Checkbox0" >first</label>
  </div>
  <div>
  <input type="checkbox" id="Checkbox1" name="cCheckbox1" class="custom-control-input" (change)="checkSelected(checkBox[1].label)">
   <label class="label" for="Checkbox1" >first</label>
  </div>
  <div>
  <input type="checkbox" id="Checkbox2" name="cCheckbox2" class="custom-control-input" (change)="checkSelected(checkBox[2].label)">
   <label class="label" for="Checkbox2" >first</label>
  </div>
</div>


 <div>
  <div>
   <input type="checkbox" id="Checkbox3" name="cCheckbox3" class="custom-control-input" (change)="checkSelected(checkBox[3].label)">
   <label class="label" for="Checkbox3" >first</label>
  </div>
  <div>
  <input type="checkbox" id="Checkbox4" name="cCheckbox4" class="custom-control-input" (change)="checkSelected(checkBox[4].label)">
   <label class="label" for="Checkbox4" >first</label>
  </div>
  <div>
  <input type="checkbox" id="Checkbox5" name="cCheckbox5" class="custom-control-input" (change)="checkSelected(checkBox[5].label)">
   <label class="label" for="Checkbox5" >first</label>
  </div>
</div>

同样,我在包含复选框的同一个 html 文件中还有两个单独的 div。我需要做的是单击第一个 div 中的第一个复选框,我需要禁用第一个 div、第二个 div 和第三个中的所有其他复选框。

由于我对 Angular 完全陌生,我不知道如何在此处禁用。我曾尝试使用 ng-disabled,但它似乎不起作用。有人可以帮我弄这个吗?

4

5 回答 5

19

对于Angular 2+disabled ,您可以通过设置属性来启用/禁用复选框input type=checkbox

采用: [attr.disabled]="isDisabled ? true : null"

请注意,[attr.disabled]="isDisabled仅此一项是行不通的。您需要明确设置禁用属性以null从禁用复选框中删除禁用属性。

<input type="checkbox" [attr.disabled]="isDisabled ? true : null" />
于 2020-07-03T01:44:57.067 回答
14

ng-disabled是 AngularJS 语法。您可以使用[disabled]输入来禁用复选框。

<input [disabled]="isDisabled" = type="checkbox" id="Checkbox0" name="cCheckbox0" class="custom-control-input" (change)="checkSelected(checkBox[0].label)">

在.ts isDisabled : boolean;


可选的东西

您可以使用Angular Material进行开发。因为它有很多优点。而且它还有定义明确的 API。

<mat-checkbox><input type="checkbox">提供与通过 Material Design 样式和动画增强的本机相同的功能。

角材料

于 2018-08-09T19:03:50.280 回答
5

您可以使用标签的[disable]属性。input[type="checkbox"]

例如: -

<input [disabled]="isDisabled" type="checkbox" id="Checkbox3" name="cCheckbox3" class="custom-control-input" (change)="checkSelected(checkBox[3].label)">

isDisabled变量将在您的.ts

于 2018-08-09T17:48:26.867 回答
3

对于更大、更复杂的表单,我强烈建议使用反应式表单。使用反应形式,您可以[disabled]="condition"在条件类似于whateverCheckbox.value.

更新:我更新了我的答案以使用whateverCheckbox.value而不是whateverCheckbox.checked. 这种方法仅适用于反应形式。我强烈建议将反应式表单用于更大、更复杂的表单,您可能需要对表单元素进行更详细、个性化的控制。反应式表单是围绕可观察流构建的,其中表单输入和值作为输入值流提供,同时让您可以同步访问数据。

这是文档:https ://angular.io/guide/reactive-forms

一旦您将表单设置为响应式表单、实例化表单控件并绑定到复选框输入表单元素,您应该能够访问复选框的值,如上所示。

更新 2:您不一定需要使用表单来利用反应式表单控件。

FormControl在您的 component.ts 文件中导入@angular/forms如下:

import { FormControl } from '@angular/forms';

然后在组件类中声明表单控件,如下:

checkbox1 = new FormControl('');

然后在您的模板中,只需将该 FormControl 绑定到输入元素,如下所示:

<input type="checkbox" [formControl]="checkbox1">

然后您应该能够使用以下方法在任何地方访问该值:

checkbox1.value
于 2018-08-09T17:50:43.057 回答
0

如果您使用的是响应式表单,您还可以像这样禁用组件中的复选框

import { FormBuilder, FormGroup } from '@angular/forms';

constructor(private _fb: FormBuilder) { }

myForm: FormGroup;

ngOnInit(): void {
 this.myForm = this._fb.group({
   myCheckBoxInput: [{value: 1, disabled: true}],
 });
}
于 2020-03-04T13:00:26.450 回答