У меня есть служба сообщений, в которой указывается тема сообщений:
message = new Subject<string[]>();
addMessage(message:string) {
this.message.next(message);
}
и я создаю другую службу, которая использует эту (службу сообщений) для добавления сообщения:
logMessage(message: string):void {
this.messageService.addMessage("HeroService: " + message) }
}
затем я буду использовать тему сообщения в компоненте и циклично выбрасывать каждое сообщение:
constructor(private messageService: MessageService ) {
this.messageService.messages.subscribe(h=>this.messages = h );
}
но выше, в функции addMessage в службе сообщений следующий появляется ошибка (означает, что я не могу добавить строковый тип к string []), так как я могу добавить к теме и использовать ее как массив?





Измените свой метод addMessage() на этот:
addMessage(message:string[]) {
this.message.next(message);
}
Затем передайте сообщение в методе logMessage() следующим образом:
logMessage(message: string):void {
this.messageService.addMessage(["HeroService: " + message]);
}
спасибо, ты знаешь, как я могу прояснить тему? this.messages.next ([] как любой); это утверждение не работает
Вам не нужно очищать тему. Он будет содержать последнее значение, которое вы получите в подписке.
Вам просто нужно очистить / повторно инициализировать this.messages следующим образом: this.messages = [];
messageявляется субъектомstring[], что означает, что он будет выдавать только массивы строк.