Angular2session存储后session存储设置当前值未修改

Angular 2 sessionStorage after session storage set the current value not modified

我需要一些关于session存储问题的帮助。

当我从 Dropbox 更改值时,它会在页面上更改,但在我单击另一个页面并返回后,该值未保存。所以我做了什么:

handleOnItemsPerPage(itemsPerPage) {

  sessionStorage.setItem('itemsPerPage', JSON.stringify(itemsPerPage));

  this.onFilter.emit({
    items: this.cachedItems,
    field: 'type',
    type: this.selectedCategory,
    query: this.searchQuery,
    itemsPerPage: parseInt(itemsPerPage, 10),
    sortAsc: this.isAscSort,
    page: this.page
  });
}

当我更改值时,我将其保存在 session 存储中,因此当我回来显示它时。所以在我的 ngInit 中:

ngOnInit() {
   this.sessionStorage =  JSON.parse(sessionStorage.getItem('itemsPerPage'));
}

并且在 html 中:

<app-pager [pagedItems]="pagedItems"
[itemsPerPage]="sessionStorage ? sessionStorage : itemsPerPage"
[page]="page"
(onPageChange)="handleOnPageChange($event)"
(onItemsPerPage)="handleOnItemsPerPage($event)">
</app-pager>

问题是第一次工作正常,如果我更改值并返回页面,它会应用更改,但是在我再次更改值后,它不会更改为当前值,但是session 一个。

如何解决这个问题? 谢谢。

它只会在重新加载时发生变化,原因很简单,然后 ngOnInit 被触发。 如果您想更改该值,则必须更改它并存储该值。

sessionStorage.setItem('itemsPerPage', JSON.stringify(itemsPerPage));
this.sessionStorage =  itemsPerPage;

如果您想知道为什么双向绑定不起作用,请尝试:

let a = 10;
let b = JSON.parse(JSON.stringify(a));

通常如果你做let b = a;然后改a b就会改成,但是现在你可以改a而b不会改。我们称之为深拷贝。