带有自定义编辑器的ng2-smart-table,不会在编辑时更新数据源

时间:2018-03-02 17:35:33

标签: angular ng2-smart-table

我有一个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中设置好的值

有人已经遇到过这个问题吗?解决方案是什么? 谢谢!

2 个答案:

答案 0 :(得分:1)

我通过

解决了我的问题

html文件

 <ng2-smart-table [settings]="settings" [source]="source" (editConfirm)="onEditConfirm($event)" >

Ts档案

onEditConfirm(event) {
    doEdit(event.newData);

}

在您的事件变量中,使用“newData”获取更新的数据,如上所示

https://github.com/akveo/ng2-smart-table/blob/master/src/app/pages/examples/various/advanced-example-confirm.component.ts

答案 1 :(得分:0)

我找到了原因,但不是一个简单的解决方法。 我使用this.source.update(旧的,新的)来重现提交值的问题。

查看github代码,更新不要用另一个替换对象,而是“融合”两个...

为此,看起来像localdatasource.prototype.update使用的是旧版本的deepextend(2014 ...),它不管理Buffer,Regex和Date。

我将填写ng2-smart-table github上的一个错误来解决这个问题。

现在,您应该删除旧对象并添加新对象,但是您丢失了索引信息......如果我找到了相应内容,我将完成答案。