如何 "reset" 带有 .subscribe 消息的数组?
How to "reset" an array with messages with .subscribe?
我的 messages.component.ts 我正在使用
constructor(public messagesService: MessagesService) {
this.subscription = this.messagesService.getMessage().subscribe(message => { this.messages.push(message); });
this.subscription = this.messagesService.clearMessages().subscribe(this.messages = []);
}
clearMessages 这样做:
clearMessages(): void {
this.subject.next();
}
我如何将其与 .subscribe() 结合使用,因为 subscribe() 在类型 void 上不存在?
由于缺乏细节,我假设 getMessage()
函数看起来像
getMessage(): Observable<any> {
this.subject.asObservable();
}
在这种情况下,您可以在 clearMessages()
函数中发出 false
布尔值。
clearMessages() {
this.subject.next(false);
}
并且由于它 return 不是可观察的,因此您无法订阅它。但不需要订阅,因为它已经订阅了 getMessage()
函数。您现在可以在将通知推送到数组之前检查通知是否有效。
constructor(public messagesService: MessagesService) {
this.subscription = this.messagesService.getMessage().subscribe(message => {
if (!!message) this.messages.push(message); // <-- push only valid `message`
else this.messages = []; // <-- assign empty array if `message` isn't defined
});
}
我的 messages.component.ts 我正在使用
constructor(public messagesService: MessagesService) {
this.subscription = this.messagesService.getMessage().subscribe(message => { this.messages.push(message); });
this.subscription = this.messagesService.clearMessages().subscribe(this.messages = []);
}
clearMessages 这样做:
clearMessages(): void {
this.subject.next();
}
我如何将其与 .subscribe() 结合使用,因为 subscribe() 在类型 void 上不存在?
由于缺乏细节,我假设 getMessage()
函数看起来像
getMessage(): Observable<any> {
this.subject.asObservable();
}
在这种情况下,您可以在 clearMessages()
函数中发出 false
布尔值。
clearMessages() {
this.subject.next(false);
}
并且由于它 return 不是可观察的,因此您无法订阅它。但不需要订阅,因为它已经订阅了 getMessage()
函数。您现在可以在将通知推送到数组之前检查通知是否有效。
constructor(public messagesService: MessagesService) {
this.subscription = this.messagesService.getMessage().subscribe(message => {
if (!!message) this.messages.push(message); // <-- push only valid `message`
else this.messages = []; // <-- assign empty array if `message` isn't defined
});
}