angular - (Angular)为什么我的数组没有变空?
问题描述
我有一个如下所示的 messages.component.ts:
export class MessagesComponent implements OnInit, OnDestroy {
messages: Message[] = [];
subscription: Subscription;
constructor(public messagesService: MessagesService) {
for (let i = 0; i < this.messages.length; i++) {
if (i === 2) {
this.messages = [];
}
}
this.subscription = this.messagesService.getMessage().subscribe(message => { this.messages.push(message); });
}
我的消息服务:
export class MessagesService {
constructor() { }
private subject = new Subject<Message>();
sendMessage(type: string, message: string): void {
this.subject.next({text: message, type });
}
clearMessages(): void {
this.subject.next();
}
但是我的for循环没有变空,在我有2个条目之后,为什么?
解决方案
我会试试这个:
this.subscription = this.messagesService.getMessage().subscribe(
message => {
if (this.message.length >= 3)
this.message= [];
this.messages.push(message);
}
);
在您的示例中,您仅在构建组件时添加一个条件,该组件甚至可能还没有订阅。在这里,您检查 index 是否2
(从 0 开始)相当于array.length >= 3
. 所以诀窍是在每次数据检索时检查数组长度。
现在,如果您仍然想要它,for-loop
它会像这样
this.subscription = this.messagesService.getMessage().subscribe(
message => {
for (let i = 0; i < this.messages.length; i++) {
if (i === 2) {
this.messages = [];
}
}
this.messages.push(message);
}
);