我有一个没有任何代码的问题。我在某处读到,当某些变量改变其引用时,视图才会更新。但它如何与数组一起使用?当我编辑数组时,有时视图会更新,有时则不会。有没有办法在数组更改后刷新视图?现在我使用:
data =JSON.parse(JSON.stringify(data))
获取数据数组的新引用。它是否正确?有没有更好的方法呢?
答案 0 :(得分:4)
在Angular中,您需要了解更改检测的工作原理,因为它会影响对象和组件的处理方式。有几篇关于它的好文章。 Maximus提到过一个,你可以看一下这个博客: https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html
使用数组时,很难检测到内部更改,因此如果修改其内容,则应该对数组进行浅层复制。浅拷贝意味着数组的内容保持不变(内存中的相同对象),但数组对象是新的。有几种方法可以做到:
const shallowCopy1 = [...originalArray];
const shallowCopy2 = originalArray.slice(0);
JSON stringify + parse创建数组及其内容的深层副本(内存中的新对象),这在您的情况下是不必要的。
还有一个概念,即保持整个应用程序模型不可变(在创建后不要对其进行修改 - 在需要修改时创建新副本)。检查this article或ngrx项目。如果你需要构建一个更复杂的应用程序,它会很有趣。