AG网:因为它是只读的不能在电网领域的更新(AG-Grid: Cannot update field

2019-10-30 04:38发布

我试图更新AG-网格中的字段,它不断用错误类型错误回来:无法分配给只读属性对象的'量“的翻译:”。

它可以让我编辑的细胞,但是当我尝试更新它与这个错误出现。

我使用的是可观察到的从NGRX商店填充rowData如下:

this.order$.subscribe(order => {
            this.order = { ...order, products: [...order.products] };
        });

我检查了上面,我可以说this.orders.products更新此对象= []这对我说,这已不再是一成不变的。

 <mi-ag-grid [data]="order.products" [columnDefs]="columnDefs" [suppressClickEdit]="false"></mi-ag-grid>

columnDefs = [
        {
            headerName: 'Code',
            field: 'code',
            width: 150
        },
        {
            headerName: 'Name',
            field: 'name',
            width: 200,
            editable: true
        },
        {
            headerName: 'Quantity',
            field: 'quantity',
            width: 150,
            editable: true
        }
    ];

我从旁边试图@GreyBeardedGeek建议,并试图用valueSetter按低于设定值,但仍然得到同样的错误。

,
    {
        headerName: 'Quantity',
        width: 150,
        editable: true,
        field: 'quantity',
        valueSetter: quantityValueSetter
    },


function quantityValueSetter(params): any {
console.log(params);
params.data.quantity = params.newValue;

}

Answer 1:

您从商店获取和使用网格中的对象是不可改变的。

默认情况下,当您在网格中的列可编辑,它会尝试直接更新支持对象,这就是你所看到的问题 - 网格试图变异不可变对象。

解决的办法是一个“valueSetter”属性添加到网格中列的定义。 此属性的值应该是将接收新的值,然后使用该新值更新存储的功能。

当你有这样的属性设置,AG-电网不会尝试直接更新的对象。



文章来源: AG-Grid: Cannot update field in Grid as it is read only