变量添加到一个变量可观察<>
问题描述:
我有可观察到的变量:变量添加到一个变量可观察<>
messages: Observable<Message[]>;
我想变量添加到这个可观测变量。由于这是信息的集合:消息[],我要留言变量添加到它:
const newMessage = new Message(objMessage);
我不知道如何做到这一点,我试过,但忽略了最低的工作,因为它是没有可观察的变量:
newThread.messages = [newMessage];
或者这样:
newThread.messages.subscribe((message: Message) => {
newThread.messages = message;
});
//////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////// /////// 编辑
我在thread.model.ts初始化我的变量消息:
messages: Observable<Message[]> = new Observable<Message[]>();
我初始化我的变量newThread.messages在其他服务chat.service.ts :
newThread.messages.next(newMessage);
但它使我这个错误:
Property 'next' does not exist on type 'Observable<Message[]>'
Plunker链接:
https://plnkr.co/edit/aNzWu2ShO55bk3fRJ5ya?p=catalogue
/////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////// 编辑
我刚刚意识到,它不工作,因为我想。 当有多条消息时,这不起作用。用我所做的,第二条消息删除第一条消息。虽然我希望变量thread.messages包含一堆消息。
所以我尝试使用.next方法,但这使我陷入了错误。
export class Thread {
id: string;
messages: BehaviorSubject<Message[]>;
}
const newThread: Thread = new Thread(objMessage.id, [newUser],objMessage.title);
const newMessage = new Message(objMessage);
newThread.messages.next([newMessage]);
Cannot read property 'next' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'next' of undefined
或者这样:
private subject = new Subject<Message[]>();
this.subject.next([newMessage]);
thread.messages.subscribe((messages: Message[]) => {
messages = this.subject.asObservable();
});
你知道为什么吗?
你可以做'Observable.of([NewMessage作为])添加在观察到的数据流的数据'或者你可以使用'.next'方法将数据推进入Observable流。 –
@pankaj 我无法使用.next和这种类型的变量:Observable –
Floriane
因为您还没有声明Observable,所以您应该在将值推入之前初始化observable,如'messages:Observable = new Observable ( )' –