2017-10-28 18 views
0

我使用以下共享服務將組件A(在點擊事件上)的一些數據傳遞給B.在通過共享服務傳遞數據後保持刷新數據

@Injectable() 
export class HostelService{ 
    private book = new BehaviorSubject<String>(""); 

    currentBook = this.book.asObservable(); 

    getBookDetails(book){ 
     this.book.next(book); 
    } 
} 

但是,正如所料,頁面刷新時,組件B上傳遞的數據會丟失。我的問題是,如何才能讓它持續到組件A的下一個單擊事件。謝謝。

編輯:嘗試的localStorage

在成分B的ngOnInit()我試過如下:

ngOnInit() { 
    this.bookService.currentbook.subscribe(book => { 
     this.book = book; 
     localStorage.setItem("book", JSON.stringify(this.book)); 
     this.book = JSON.parse(localStorage.getItem("book")); 
    }); 

仍然無法堅持。

編輯2:

好了,所以我完全得到了直接在本地存儲擺脫了服務,並存儲在A組份對象(的onclick內),並簡單地用getItem在組件B.它似乎是工作現在好了。但是,即使使用共享服務又有什麼意義?我猜這在這種情況下沒有必要?

+0

使用本地存儲來保存數據。 – alexKhymenko

+0

您必須將其存儲在應用程序(本地/會話存儲)外部,並在應用程序重新啓動時檢索它。 – jonrsharpe

+0

我已經更新了原來的帖子與我所做的。還有一個問題。 – ZeroDarkThirty

回答

0

可以使用localStoage留存數據,因此它不會刷新後丟失:

localStorage.setItem('book', book); 

,並從那裏再次得到它:

localStorage.getItem('book'); 
+0

請檢查更新的原始帖子。問題仍然存在。 – ZeroDarkThirty

+1

請移動setItem裏面的訂閱:「this.bookService.currentHostel.subscribe(book => {this.book = book; localStorage.setItem(」book「,JSON.stringify(this.book));});」 –

+0

請檢查我所做的更新。 – ZeroDarkThirty