我正在尝试从ngx-datatable获取最新的“单击”原始数据。目前,我有
<ngx-datatable
[rows]="rows"
[selected]="selected"
[selectionType]="'multiClick'"
(select)='onSelect($event)'
(dblclick)='onDoubleClick($event)'
>
由于选定的原始数据存储在“原始”文件中,因此几乎可以起作用的一件事就是像这样获得最新的选定数据:
const latest = selected[selected.length - 1];
问题是,当取消选择最新单击的原始数据(在某个时间之前被选择)时,它将退出“所选”数组,这不再成立。还有其他方法可以解决此问题,以便获得最新的“点击”原始数据。
答案 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]);