首页 > 解决方案 > 计数器应重置为零,然后再次从 1 开始

问题描述

我想将读取消息的数量存储在一个数组中,然后根据长度和计数器值之间的差异重置计数器。

this.badgeCount = this.messages.length //5

这里this.messages.length来自每条消息的服务。

每当 matMenu 关闭时,我都会将计数器重置为零并将消息标记为已读。

menuClosed(){
 this.badgeCount = 0;

 this.messages.forEach((message: Message){
  message.read = true;
 })

}

这里的问题是this.messages.length总是会是实际长度让我们说5所以每当新消息到来时,长度变为6在这种情况下,badgeCount 从6而不是0开始。有没有办法可以将读取的消息存储在一个数组中,然后用消息的长度计算它。

这是工作样本

标签: javascriptangulartypescript

解决方案


您需要做的就是让服务只计算未读消息,如下所示

this.badgeCount = this.messages.filter((message: Message) {
    return !message.read;
}).length;

推荐阅读