[英]how to keep the checkbox checked if it has been already checked using Angular2
[英]Keep checkbox checked in angular
使用 angular 9 和一些自定義輸入,我做了以下 =>
https://stackblitz.com/edit/angular-ivy-rgsatp
我想阻止用戶禁用當前選中的單選按鈕,所以我在radio-button.component
中更改了以下內容
從
<label [class]="'radio-container ' + cssClass || ''">
<div class="radio">
{{ checked }}
<input type="checkbox" [checked]="checked" [(ngModel)]="checked" (click)="click()" />
<span class="checkmark"></span>
</div>
<div style="margin-left: 20px;">
<ng-content></ng-content>
</div>
</label>
我刪除了 ngModel 的綁定以執行[ngModel]="checked"
並強制輸入 state。
https://stackblitz.com/edit/angular-ivy-x2sszw
我面臨的問題是,雖然檢查保持正確,但 css 沒有,我不明白為什么不強制檢查。
選中和取消選中是瀏覽器事件,也許你應該使用event.preventDefault()
來停止瀏覽器的默認行為
喜歡
<input type="checkbox" [checked]="checked" [ngModel]="checked" (click)="click($event)" />
和
click(event): void {
if (this.checked) {
event.preventDefault();
}
if (!this.disabled) {
this.checked = true
this.emitChange()
}
}
堆棧閃電戰
https://stackblitz.com/edit/angular-ivy-pomkvy
另外我想補充兩點
this.disabled
。 因為 Angular 在每個事件上都運行它的周期。 所以可能會影響性能像這樣試試
<label [class]="'radio-container ' + cssClass || ''">
<div class="radio">
{{ checked }}
<input type="checkbox" [checked]="checked" [ngModel]="checked" (click)="click()" [attr.disabled]="checked ? true : null" />
<span class="checkmark"></span>
</div>
<div style="margin-left: 20px;">
<ng-content></ng-content>
</div>
</label>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.