通过共享服务

时间:2017-10-28 15:38:27

标签: angular

我使用以下共享服务将组件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内部),并在组件B中使用getItem。现在似乎工作正常。但是,甚至使用共享服务的重点是什么呢?我想在这种情况下没有必要吗?

1 个答案:

答案 0 :(得分:0)

您可以使用localStoage来保存数据,因此刷新后不会丢失:

localStorage.setItem('book', book);

然后从那里再次获取:

localStorage.getItem('book');