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