ngx-datatable使用multiClick模式获取最新点击的原始文件

时间:2019-06-01 15:44:23

标签: angular typescript ngx-datatable

我正在尝试从ngx-datatable获取最新的“单击”原始数据。目前,我有

<ngx-datatable
   [rows]="rows"
   [selected]="selected"
   [selectionType]="'multiClick'"
   (select)='onSelect($event)'
   (dblclick)='onDoubleClick($event)'
>

由于选定的原始数据存储在“原始”文件中,因此几乎可以起作用的一件事就是像这样获得最新的选定数据:

const latest = selected[selected.length - 1];

问题是,当取消选择最新单击的原始数据(在某个时间之前被选择)时,它将退出“所选”数组,这不再成立。还有其他方法可以解决此问题,以便获得最新的“点击”原始数据。

2 个答案:

答案 0 :(得分:1)

如果您的意思是最后选择的行,那么您已经有了答案,只需将const latest = selected[selected.length - 1];放在onSelect()函数中即可。

例如

onSelect({ selected }) {
   this.selected.splice(0, this.selected.length);
   this.selected.push(...selected);

   const latest = this.selected[this.selected.length - 1];
   console.log('Latest', latest)
}

由于对数组进行了索引,因此,如果按最后一个索引进行访问,则始终会得到“最后选择的行”。

但是,如果要获取最后点击的行(无论用户是选择还是取消选择该行),则可以使用onActivate()事件处理程序来实现。

例如

onActivate(event) {
   if(event.type === "click"){
     console.log(event.row)
   }
}

如果用户正在选择或取消选择该行,这将为您提供“最后单击的行”。

您还需要将activate事件绑定到onActivate()

<ngx-datatable>
   ...
   (activate)="onActivate($event)
   ...
</ngx-datatable>

答案 1 :(得分:0)

也许可行

const latest =  Object.assign(selected[selected.length - 1]);