如何 "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
  });
}