【问题标题】:Disable only checked checkboxes Angular 8仅禁用选中的复选框Angular 8
【发布时间】:2020-12-03 06:20:34
【问题描述】:

enter image description here**有没有机会我可以在角度 8 中禁用 p-listbox 上的选定/检查项目? 通过添加或在 CSS 上。当我尝试在被禁用的完整项目列表上添加 [disabled] 属性时,我希望仅禁用列表中已检查的那些项目。 **2

<div class="ui-g">
     <div class="ui-g-12 ui-md-6 ui-lg-2">
       <label>Fields</label>
     </div>
    <div class="ui-g-12 ui-md-6 ui-lg-6">
     <p-listbox *ngIf="!datasetLoader" [options]="mandatoryField" [(ngModel)]="selectedField" 
           [listStyle]="{'max-height':'150px'}" (onChange)="fieldSelection($event)" multiple="multiple" 
           formControlName="field" checkbox="checkbox" optionLabel="DisplayFieldName">
     </p-listbox>
    </div>
 </div>

【问题讨论】:

  • 可以加[disabled]="checked"

标签: angular typescript angular8


【解决方案1】:

p-listbox 选项是primeng SelectItem 接口的基础,并且SelectItem 接口有一个名为disable 的属性,如果它设置为true,则与该项目相关的选项将被禁用。

模板

<p-listbox [options]="cars" [(ngModel)]="selectedItems" 
          [listStyle]="{'max-height':'250px'}" multiple="multiple"
    (ngModelChange)="updateItems($event)" checkbox="checkbox">
</p-listbox>

组件

  updateItems(selectedItems:string[]) {
      selectedItems.forEach(v =>{
        let car = this.cars.find( c => c.value === v); 
        car.disabled = true; 
      })
    }

每次您选择一个项目时,我们都会将该选项禁用属性更新为 true

demo ??

【讨论】:

  • 感谢您的回答。但是我可以看到的冲突是,primeNg 的 SelectItem 的接口和我为我的 API 创建的接口不匹配,因此当我检查一个项目并尝试使用 Post 方法保存并返回相同的页面/组件屏幕之前选中的项目正在取消选中。
  • 您需要将您的api响应转换为匹配primeng SelectItem的标签和值您可以在这里查看接口github.com/primefaces/primeng/blob/master/src/app/components/…
猜你喜欢
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
相关资源
最近更新 更多