javascript - 角度为 2 的三态复选框
问题描述
我想做一个具有三种状态的输入框:选中,未选中和交叉(又名失败)目前,我能够进行选中/取消选中并相应地更改计算
<input type="checkbox" [ngStyle]="{content: expression}" *ngIf="milestone?.description" [checked]="milestone?.status == 'checked'" (change)="checkMilestone(milestone,initiative, $event, '')">
但是,我无法添加crossed
( X
) 复选框。有谁知道应该怎么做?我应该有这样的状态:
states = [
{ id: 0, status: 'checked'},
{ id: 1, status: 'unchecked'},
{ id: 2, status: 'crossed'}
];
并添加样式并相应地更改它们?我不确定如何添加三种样式而不是两种。
解决方案
可以使用属性绑定设置复选框的不确定状态。这是您的标记的简化版本,显示了状态绑定:indeterminate
<input type="checkbox" [indeterminate]="milestone?.status === 'crossed'"
[ngModel]="milestone?.status === 'checked'" (ngModelChange)="checkMilestone(milestone)">
该checkMilestone
方法可能是这样的:
checkMilestone(milestone) {
switch (milestone.status) {
case "checked": {
milestone.status = "unchecked";
break;
}
case "unchecked": {
milestone.status = "crossed";
break;
}
case "crossed": {
milestone.status = "checked";
break;
}
}
}
请参阅此 stackblitz以获取演示。
推荐阅读
- hadoop - 资源管理器何时联系名称节点,我可以在代码中的什么位置找到它?
- python - 如何将字符串写入numpy数组?
- wpf - 如何在没有 MVVM 的情况下使用 entityframework 和 wpf 从表中的项目列表生成按钮列表?
- python - Traceroute - 有时套接字会失败
- python - 仅使用 Behave 运行功能/步骤文件
- javascript - 使用 Javascript 在 content-disposition 标头中设置大小参数
- excel - Excel 动态表与另一个工作表中的数据
- mysql - ER_PARSE_ERROR:您的 SQL 语法有错误 - Node JS
- security - 使用 AspNetUserTokens 表在 ASP.NET Core Web Api 中存储刷新令牌
- python - 如何从列表中删除所有符合特定格式的字符串?