【问题标题】:retain material badge value after page refresh angular 9页面刷新角9后保留材料徽章值
【发布时间】:2020-08-11 21:48:32
【问题描述】:

我使用材料徽章通知显示向用户显示新的通知。 这是我迄今为止尝试过的:

badgeCounter: number;
hideMatBadge: boolean = true;

ngOnInit() {
this.loadData();
this.hideMatBadge = false;


localStorage.setItem("badgeCounter", badgeCounter.toString());
localStorage.getItem("badgeCounter"); 

 }

 incrementCount() {
 this.badgeCounter++;
 this.hideMatBadge = false;

  }

  decreaseCount() {
   if (this.badgeCounter < 0)
    return;
   this.badgeCounter--;
  if (this.badgeCounter == 0) {
    this.hideMatBadge = true;
  }
 }

但它不起作用。实际上这个badgeCounter: number; 把我的页面弄乱了,我必须像badgeCounter: number = 0; 那样使用它,但是在刷新时它又回到零。 任何想法 谢谢

【问题讨论】:

  • 您需要分配从 localStorage 获得的值。 this.badgeCounter = localStorage.getItem("badgeCounter");

标签: typescript angular-material material-design


【解决方案1】:

正如@Eldar 所说,您需要分配从 localStorage 获得的值。并检索它,因此您的最终代码应如下所示:

incrementCount() {
 this.badgeCounter++;
 localStorage.setItem("badgeCounter", this.badgeCounter.toString());
 this.hideMatBadge = false;
}

decreaseCount() {
  this.badgeCounter = localStorage.getItem("badgeCounter");
  if (this.badgeCounter < 0)
    return;
   this.badgeCounter--;
  if (this.badgeCounter == 0) {
    this.hideMatBadge = true;
}

【讨论】:

  • 感谢您的回复。实际上 incrementCount() 和 reductionCount() 工作正常。我的问题是页面刷新...它将通知的值返回为零。
  • 嗯..好的。在调用 incrementCount() 后检查 localStorage(使用控制台)值时,该值是否正确设置?
  • @touinta 你应该从ngOnInit中删除这行localStorage.setItem("badgeCounter", badgeCounter.toString());
  • @touinta 好的,您的组件中是否还有其他地方可以更改您的 badgeCounter 的值?如果不是,我认为最好你能提供一个 StackBlitz 演示,以便我们进一步调查。
  • @Terry 和@Eldar。谢谢您的帮助。我终于在incrementCount() 中使用了localStorage.setItem('badgeCounter', JSON.stringify(this.badgeCounter));,在ngOnInit() 中使用了this.badgeCounter = JSON.parse(localStorage.getItem('badgeCounter'));,它成功了。
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多