我遇到了一个问题:
无法添加属性X,对象不可扩展
在将我的Angular项目更新为Angular 9,并更新了Ngrx版本后出现了这个问题。当我将Ngrx版本回滚到8时,它可以正常工作。但是我也需要将它升级到Angular 9更新的v9版本。这发生在我将其作为数据源添加到Material表中并添加了附加属性时。我认为这个附加属性的修改是导致这个问题的原因。但我从我们得到的内容创建了一个新的数组,并使用slice尝试了下面的操作:
myDataArray.slice(0)
它也不起作用。
我参考了Ngrx版本8到9的更改列表和迁移指南,可以在这里找到https://ngrx.io/guide/migration/v9
我发现与Angular 9相关的一个特殊更改是关于不变性的。他们在那里定义了与行动、状态和序列化相关的不可变逻辑。我尝试了他们在Ngrx V9更新中建议的方法来解决这些问题,可以在这里找到https://ngrx.io/guide/store/configuration/runtime-checks
但这对我没有起作用。如果有人有解决该问题的解决方案,那将非常有帮助。谢谢。
错误堆栈跟踪..(我也使用了matDataFlatner,这就是对象突变发生的地方)
app-error-handler.ts:30 TypeError: Cannot add property level, object is not extensible at MatTreeFlattener.defaultFlattenerTransform [as transformFunction] (tree-table-flattener-builder.ts:57) at MatTreeFlattener._flattenNode (flat-data-source.ts:58) at flat-data-source.ts:81 at Array.forEach () at MatTreeFlattener._flattenChildren (flat-data-source.ts:78) at MatTreeFlattener._flattenNode (flat-data-source.ts:65) at flat-data-source.ts:92 at Array.forEach () at MatTreeFlattener.flattenNodes (flat-data-source.ts:92) at MatTreeFlatDataSource.set (flat-data-source.ts:138)
myDataArray = JSON.parse(JSON.stringify(myDataArray))
或者其他深度克隆的方法。 - julianobrasil