javascript - 取消始终勾选的复选框
我正在使用一个复选框,我希望它永远不被选中。
我为此使用了一个函数,但它不起作用,如果你多次勾选复选框,它会被激活(选中)。
我怎样才能让它一直保持未选中状态?
演示
.TS
check: boolean = false;
change(e){
this.check = false
}
.HTML
<ul class="mdc-image-list my-image-list" style="margin-top:120px;padding-left: 10px;padding-right: 10px;">
<ng-container *ngFor="let product of data; let j = index;">
<li class="mdc-image-list__item">
<div class="mdc-image-list__image-aspect-container">
<img [src]="product.image" class="mdc-image-list__image">
</div>
<div class="mdc-image-list--with-text-protection">
<div class="mdc-image-list__supporting mdc-image-list__supporting">
<span class="mdc-image-list__label">{{product.name}}</span>
</div>
<div class="Info">
<dx-check-box (onValueChanged)="change($event);" [(value)]="check"></dx-check-box>
</div>
</div>
</li>
</ng-container>
</ul>
问题
答案#1
你可以使用 [ngModel] 绑定来显示 check 的值,并使用 (ngModelChange) 事件处理来处理更改:
<dx-check-box [ngModel]="check" (ngModelChange)="change($event)"></dx-check-box>
在事件处理程序中:
- 设置新的
check值 - 通过调用
ChangeDetectorRef.detectChanges强制检测更改 - 将
check值恢复为false
change(value) {
this.check = value;
this.changeDetectorRef.detectChanges();
this.check = false;
...
}
查看这个 Stackblitz 演示。
答案#2
我已经尝试过简单的
<dx-check-box [value]="false"></dx-check-box>
但对我来说它不起作用。
似乎是一个 bug 或者什么的。
解决方法选项有:
<dx-check-box [value]="false" [disable]="true"></dx-check-box>- 可以使用,显示略有不同,但你可以在css中设置一些样式,使它看起来不是禁用状态在复选框上绘制透明的
div,它会阻止input被点击
