NodeJS,Angular 2 | 接下来在Observable上执行方法

我目前正在开始使用Angular 2,并陷入了可能非常简单的事情:

我有一个共享服务chatMessageService.ts:

import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; @Injectable() export class ChatMessageService { private messageList = new BehaviorSubject<string>(""); currentMessage = this.messageList.asObservable(); constructor() { } public addMessage(msg:string) { this.messageList.next(msg) } } 

该服务由两个组件导入,一个调用addMessage函数将消息添加到Observable,然后我的chatComponent.ts如下所示(缩短fpr的便利性):

 import { Component } from '@angular/core'; import { Message } from './message'; import { ChatMessageService } from './chatMessage.service'; @Component({ selector: 'app-chat', templateUrl: './chat.component.html', styleUrls: ['./chat.component.css'] }) export class ChatComponent { conversation: Message[] = []; //..... constructor(private chatMessageService: ChatMessageService) { } addUserMessage(message) { this.conversation.push({ content: message }); } ngOnInit() { this.chatMessageService.currentMessage.subscribe(message => {this.addUserMessage(message);} ) } } 

我的危机发生在最后一个下属部分。 当我replace

 {this.addUserMessage(message);} 

 {console.log(message)} 

信息打印出来非常好。 如果我手动调用addUserMessage() – 方法,它工作得很好。 但是,当我在那里调用方法时,将消息作为参数,没有任何反应。 该方法甚至没有执行?

感谢您的见解!

看起来你需要一些缓冲服务。
尝试。而不是BehaviorSubject

 private messageList = new ReplaySubject<string>(10); 

参见工作示例: Plunker