primeng多选模式:如何根据条件应用条件禁用复选框

时间:2017-06-29 06:44:29

标签: angular angular2-template primeng primeng-datatable

<p-column header="Actions" selectionMode="multiple" [style]="{'width':'40px'}" ></p-column>

我添加了上面的行,这会在我的启动数据表中导致多选模式。但我想根据条件禁用某些复选框。 怎么办呢? 我尝试使用[rowstyleclass],但它有性能问题,因为它被称为evereytime我将鼠标悬停在特定行上。 任何解决方案?

2 个答案:

答案 0 :(得分:2)

您可以使用templating来实现这一目标。只需根据模板中的条件禁用复选框,您就应该好好去。

答案 1 :(得分:2)

您可以使用列模板来实现此目的。这是示例代码。

这里所有偶数行都被逻辑禁用 - [禁用] =&#34; item.Id%2 == 0&#34; ,您可以将所需的逻辑放在适当的位置。

your.component.html

<p-dataTable #dt [value]="persons">
 <p-column field="" header="Select" [style]="{'width':'60px', 'align-items':'center'}">
   <ng-template let-col let-item="rowData" pTemplate="body">
      <p-checkbox [disabled]="item.Id%2 == 0" 
                  [style]="{'align':'center'}" 
                  name="persongroup" 
                  [value]="item" 
                  [(ngModel)]="selectedPersons">
      </p-checkbox>
   </ng-template>
 </p-column>
 <p-column field="Id" header="Id"></p-column>
 <p-column field="Name" header="Name"></p-column>
</p-datatable>

your.component.ts

persons : Person[] = [
                        {'Id' : 1, 'Name' :     'person1'},
                        {'Id' : 2, 'Name' :     'person2'}
                     ];
selectedPersons : Person[]=[];