問題:在表單中修改數據,經常遇到表格的數據也跟着修改的問題,並且不管是不是按確定或取消按鈕,表格的數據還是被修改了。
部分代碼如下:
editRow(row: any): void { this.currentInfo = row; this.dialogVisible = true; this.title = '更新信息'; }
問題原因:
this.currentInfo = row;
這段代碼中,row是Object對象類型,如果直接賦值的話,就變成了淺拷貝,復制的是地址,導致在表單中改變值的時候table中的數據也跟着改變,所以要進行深拷貝。
解決方案:利用JSON進行深拷貝
editRow(row: any): void { this.currentInfo = JSON.parse(JSON.stringify(row)); this.dialogVisible = true; this.title = '更新信息'; }
PS:js中有兩種不同的數據類型,一個是基本類型,一個是引用類型,其中Object是引用類型(這里使用的是typescript,原理與js相同)
原文鏈接:https://blog.csdn.net/SmallTeddy/article/details/106542890