我想将读取的消息数存储在一个数组中,然后根据长度和计数器值之间的差值重置计数器。
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 开始。 有没有一种方法可以将读取的消息存储在数组中,然后根据消息的长度进行计算。
答案 0 :(得分:3)
您需要做的就是仅对服务进行计数,如下所示未读消息
this.badgeCount = this.messages.filter((message: Message) {
return !message.read;
}).length;
答案 1 :(得分:1)
您的问题不太清楚,但我会尽力回答
如果您希望将已读消息保留在另一个数组上,则可以使用push
来声明它为添加项。
menuClosed(){
this.badgeCount = 0;
var readMessages : Message[];
this.messages.forEach((message: Message){
message.read = true;
readMessages.push(message);
})
//now you can use readMessages.length
}
如果您不需要已读邮件,而只需要已读邮件的计数器...
menuClosed(){
this.badgeCount = 0;
this.messages.forEach((message: Message){
message.read = true;
})
//keep the readMessages in a class variable and use it were needed
this.readMessages = this.messages.length ;
}