2017-10-12 29 views
-1

我有一個組件管理元素列表。用戶可以過濾所有條目(通過三個複選框)。可以點擊一個元素並跳轉到第二個組件。該組件顯示適當的細節。Angular 4:當用戶按下後退按鈕時恢復本地存儲

第二組分通過函數

[routerLink]="..." 

當在第一分量濾波,我保存所有過濾器選項和列表的結果,以localStorage的切換到第二部件。

現在我想在用戶按下後退按鈕時恢復本地存儲。如何檢查第一個組件在第二個組件上啓動的用戶操作?

的URL第一部分是這樣的: http://localhost:4200/regulation

的URL謝勝利組件看起來是這樣的: http://localhost:4200/regulation/1234566

回答

0

這很容易。您可以通過使用JSON對其進行字符串化來保存數組,因爲localStorage只接受字符串

下面是使用this.filtering爲您過濾陣列,並設置在localStorage的一個例子:

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

它變得除去刪除最後一個陣列,並更換它。

你來自及部件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

但是當我是第二個組件(url:http:// localhost:4200/regulation/1234566)並且我按回退按鈕返回到組件1(url:http:// localhost:4200/regulation)時,我不想刪除緩存。只有當我在組件一上,我按刷新。你懂我的意思嗎?當我做localStorage.removeItem('過濾');在ngOnInit中,當我從組件2返回時,存儲也將被刪除? – PaTUUm

相關問題