PrimeNG在单选中从表中删除行选择

时间:2018-10-19 14:46:26

标签: angular primeng primeng-datatable

我尝试使用PRIMENG中的Table-CRUD,但是,与示例一样,我遇到了同样的问题。即使我关闭对话框,选择也会继续。 关闭对话框后,我想清除该选择。 我什至尝试使用Table类中的@ViewChild引用。

@ViewChild('dtUserEmp') table: Table; 

TagID

<p-table #dtUserEmp selectionMode="single"
       [(selection)]="usuarioEmpresaSelection"
       (onLazyLoad)="lazyLoadingNat($event)"
       (onRowSelect)="rowSelect($event)"
       (onRowUnselect)="rowUnselect($event)"
       dataKey="empresa"...>... </p-table>

我关注的文档中的链接: https://www.primefaces.org/primeng/#/table/crud

1 个答案:

答案 0 :(得分:1)

这不是最佳方法,但是我可以告诉您如何实现此目标的方法。以后,您可以以更好的方式进行操作。您还会在控制台中看到一些错误,但是可以轻松处理它们,并且不会破坏您的应用程序。 因此,让我们打破您的要求,如下所示:

现在,无论何时单击任何行类,都会添加 ui-state-highlight 。因此,关键是每当我们单击保存时都删除此类。

假设下面是我的表,并且我已经给出#dd作为对此表的引用。

<p-table #dd [columns]="cols" [value]="cars" 
  selectionMode="multiple" 
  [(selection)]="selectedCars2" 
  [metaKeySelection]="true">
...
</p-table>

现在,只要调用保存按钮,只需在其中传递 dd 即可,也可以将 dd 用作组件中的@ViewChild。

<button (click)="save(dd)">Save</button>
or
import { Table } from '../../../../node_modules/primeng/components/table/table';
export class TableComponent{
 @ViewChild('dd') dd: Table;
 save(){
 }

}

现在在保存功能内的组件文件中执行以下操作: 在这里您可以找到所有行 e.tableViewChild.nativeElement.children [2] .children

save(e:any){
    let element = e.tableViewChild.nativeElement.children[2].children;
    for(let key in element){
        (element[key].classList).remove('ui-state-highlight');
    }
  }

这将从表中的行中删除该类。 您可以打印该值,并可以尝试动态获取子项的值[2]。我将其硬编码为2。您需要搜索 body 。我希望这个位置固定在桌子上。因此,硬编码将在任何地方工作。虽然可以使它动态。