2017-10-12 8 views
-1

私は要素のリストを管理するコンポーネントを持っています。ユーザーはすべての項目を3つのチェックボックスでフィルタリングできます。要素をクリックして2番目のコンポーネントにジャンプすることは可能です。このコンポーネントは、適切な詳細を表示します。角度4:ユーザーが戻るボタンを押したときにローカルストレージを復元する

第二成分は第一成分にフィルタリングする場合、私はのlocalStorageにすべてのフィルタオプションとリストの結果を保存

[routerLink]="..." 

機能を介して第二成分に切り替えられます。

ここで、ユーザーが戻るボタンを押したときにローカルストレージを復元したいとします。ユーザーが第2のコンポーネントで開始したアクションを第1のコンポーネントでチェックインするにはどうすればよいですか?

最初のコンポーネントへのURLは次のようになります。 はhttp://localhost:4200/regulation

secoundコンポーネントへのURLは次のようになります。 http://localhost:4200/regulation/1234566

答えて

0

それは非常に簡単です。配列をJSONで文字列で保存すると、localstorageはの文字列のみを受け入れます。最後のアレイを削除するために除去なってき

localStorage.removeItem('filtering'); 
localStorage.setItem('filtering', JSON.stringify(this.filtering)); 

にそれを交換してください:ここで

は、あなたのフィルタ配列として this.filteringを使用してのlocalStorageでそれを設定する例です。

あなたはCompoNetを2から戻ってきた後、あなたは、単にJSONパーサーで再度読み込むことができます。

this.filtering = JSON.parse(localStorage.getItem('filtering')); 

そして最後のトリックをあなたは(F5)を更新しヒットした場合のデータは、それが出てくる同じ原因になりますlocalStorage

+0

回答ありがとうございますが、私は間違っていると思います。私はすでにストレージを満たしており、コンポーネント1に戻るとデータがロードされます。ビット私がコンポーネント1にあってF5を押すと、ストレージを空にする必要があります。 – PaTUUm

+0

@Paddy On ** ngOnInit ** 'localStorage.removeItem( 'filtering');を実行すると空になります。 – Swoox

+0

しかし、2番目のコンポーネント(url:http:// localhost:4200/regulation/1234566)とバックボタンを押してコンポーネント1(url:http:// localhost:4200/regulation)に戻ります。私はキャッシュを削除したくありません。私がコンポーネント1にいるときだけ、私はリフレッシュを押します。分かりますか?私がlocalStorage.removeItem( 'filtering')をするとき。 ngOnInitでは、コンポーネント2から戻ったときにもストレージが削除されますか? – PaTUUm

関連する問題