我有一个ng2-smart-table的问题,我用一个空的localdatasource填充。
我有一个Date列,它使用自定义编辑器:
dateInscription: {
title: 'Date',
filter:false,
type: 'string',
valuePrepareFunction: (cell, row) => {
return `${new Date(cell).toLocaleDateString()}`;
},
editor: {
type: 'custom',
component: DateRenderComponent,
},
}
编辑器扩展了DefaultEditor,当然还要打开一个datepicker(p-calendar)。当用户选择日期时,使用以下内容更新单元格值:
onSelect(event)
{
this.cell.newValue = this.value;
}
事件被解雇了。这项工作在新的行......什么可能是错的?
创建行后,我想编辑它,但这不起作用。当我点击"保存"命令,旧值保持(注意其他简单文本列已更新)。
点击"保存"后,我可以看到使用旧单元格值调用的valuePrepareFunction。
我已经仔细检查了onSelect事件在cell.newValue中设置好的值
有人已经遇到过这个问题吗?解决方案是什么? 谢谢!
答案 0 :(得分:1)
我通过
解决了我的问题html文件
<ng2-smart-table [settings]="settings" [source]="source" (editConfirm)="onEditConfirm($event)" >
Ts档案
onEditConfirm(event) {
doEdit(event.newData);
}
在您的事件变量中,使用“newData”获取更新的数据,如上所示
答案 1 :(得分:0)
我找到了原因,但不是一个简单的解决方法。 我使用this.source.update(旧的,新的)来重现提交值的问题。
查看github代码,更新不要用另一个替换对象,而是“融合”两个...
为此,看起来像localdatasource.prototype.update使用的是旧版本的deepextend(2014 ...),它不管理Buffer,Regex和Date。
我将填写ng2-smart-table github上的一个错误来解决这个问题。
现在,您应该删除旧对象并添加新对象,但是您丢失了索引信息......如果我找到了相应内容,我将完成答案。