Angular 2在LocalStorage中存储一个反应形式

时间:2017-11-12 21:45:19

标签: angular

我尝试使用角度2创建一个活动表单,这样如果用户要刷新页面,或者甚至几天后再回来,那么他们正在处理的表单仍然会在填写时填写早点出来。我希望将此表单存储在本地存储中。

我尝试过像

这样的事情
localStorage.setItem('form', JSON.stringify(this.myFormArray))

this.myFormArray是一个表单数组。

然而,当我这样做时,我得到一个错误说...

RROR TypeError: Converting circular structure to JSON
at Object.stringify (<anonymous>)

有关如何解决此问题的任何想法?

亚历

2 个答案:

答案 0 :(得分:0)

包含循环引用的结构无法使用JSON.stringify.use json-stringify-safe序列化

https://github.com/isaacs/json-stringify-safe

它不会抛出循环引用。

答案 1 :(得分:0)

我建议的基本方法是为每个表单创建一个唯一的id,然后订阅form.valueChanges,可能需要去抖动以不在每次击键时写入,然后在订阅块中写入localStorage 。或者委托给一个服务(这样,你可以在以后更改持久性机制)。

然后在表单初始化时,使用类似form.setValue(valObj)的内容,并将该服务的检索值用于该ID。