需要禁用复选框并使其看起来像被禁用(样式))
Need both to disable a checkbox and make it look as it is disabled (style))
我有一个 HTML 元素(复选框类型的输入),在我的模板中,我将以下内容添加到提到的 HTML 元素中:
<input type="checkbox" *ngFor="let status of statuses"
[class.disabled]="status==='Ready' && settings.length > 0 && !settings.includes(status)" [disabled]="status==='Ready' && settings.length > 0 && !settings.includes(status)">
现在,一切都按照我想要的方式完美运行,但我需要复制一个很长的条件:
"status==='Ready' && settings.length > 0 && !settings.includes(status)"
有没有更短的方法呢?
我不能只使用禁用,因为那样的话复选框确实会被禁用,但它看起来好像是活动的和启用的(即使它不能被选中)。
我不能只使用class.disabled,因为那样的话复选框看起来是禁用的,但如果我尝试检查它,我会成功(它只是看起来是禁用的,但实际上是启用的)。
有什么建议吗?
也许您可以使用
代替 css 文件中的 .disabled-selector
input[type="text"]:disabled { ... your css rules ...}
如果是,您可以删除 html.
中的 [class.disabled]="..."
Instead of checking all the condition "status==='Ready' && settings.length > 0 && !settings.includes(status)" in template, use component for this.
you can write a simple function in the component which return either true or false based on the condition
function disableCheckBox() {
if(status==='Ready' && settings.length > 0 && !settings.includes(status))
return true;
return false;
}
and in the template
<input type="checkbox" *ngFor="let status of statuses"
[class.disabled]="disableCheckBox()" [disabled]="disableCheckBox()">
Or Else create a single variable for that
我有一个 HTML 元素(复选框类型的输入),在我的模板中,我将以下内容添加到提到的 HTML 元素中:
<input type="checkbox" *ngFor="let status of statuses"
[class.disabled]="status==='Ready' && settings.length > 0 && !settings.includes(status)" [disabled]="status==='Ready' && settings.length > 0 && !settings.includes(status)">
现在,一切都按照我想要的方式完美运行,但我需要复制一个很长的条件:
"status==='Ready' && settings.length > 0 && !settings.includes(status)"
有没有更短的方法呢?
我不能只使用禁用,因为那样的话复选框确实会被禁用,但它看起来好像是活动的和启用的(即使它不能被选中)。
我不能只使用class.disabled,因为那样的话复选框看起来是禁用的,但如果我尝试检查它,我会成功(它只是看起来是禁用的,但实际上是启用的)。
有什么建议吗?
也许您可以使用
代替 css 文件中的 .disabled-selectorinput[type="text"]:disabled { ... your css rules ...}
如果是,您可以删除 html.
中的 [class.disabled]="..."Instead of checking all the condition "status==='Ready' && settings.length > 0 && !settings.includes(status)" in template, use component for this.
you can write a simple function in the component which return either true or false based on the condition
function disableCheckBox() {
if(status==='Ready' && settings.length > 0 && !settings.includes(status))
return true;
return false;
}
and in the template
<input type="checkbox" *ngFor="let status of statuses"
[class.disabled]="disableCheckBox()" [disabled]="disableCheckBox()">
Or Else create a single variable for that