2017-11-12 8 views
0

角度2の反応性フォームを作成しようとしているため、ユーザーがページを更新したり、後日戻ってくると、作業していたフォームはそのまま残ります。彼らは以前にそれを埋めるように記入した。このフォームをローカルストレージに保存したいと思います。私のようなものをやってみました角2 LocalStorageに反応的なフォームを格納する

this.myFormArrayは、フォームの配列です

localStorage.setItem('form', JSON.stringify(this.myFormArray)) 

。私はこれを行うとき

はしかし、私はこの問題を解決する方法についての...

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

任意のアイデアを言ってエラーが出ますか?循環参照が含ま

アレックス

答えて

0

構造が代わりに

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

それが循環参照にスローされませんJSON.stringify.useのJSON-文字列化セーフでシリアライズすることはできません。

+0

私はこれがコアの問題だとは思わない。問題は、円形ではない可能性のある値だけでなく、フォームオブジェクト全体を格納しようとしていることです。 – GregL

0

私がお勧めする基本的なアプローチは、フォームごとに一意のIDを持っていて、form.valueChangesにサブスクライブし、おそらくすべてのキーストロークに書き込まないようにデバウンスしてから、subscribeブロックのlocalStorageに書き込みます。または、サービスに委任してください(そうしておけば、後で永続化メカニズムを変更できます)。

フォームの初期化時に、そのIDのサービスから値を取得したform.setValue(valObj)などを使用します。

関連する問題