2017-08-11 75 views
0

我有可觀察到的變量:變量添加到一個變量可觀察<>

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(); 
}); 

你知道爲什麼嗎?

+1

你可以做'Observable.of([NewMessage作爲])添加在觀察到的數據流的數據'或者你可以使用'.next'方法將數據推進入Observable流。 –

+0

@pankaj 我無法使用.next和這種類型的變量:Observable Floriane

+0

因爲您還沒有聲明Observable,所以您應該在將值推入之前初始化observable,如'messages:Observable = new Observable ( )' –

回答

0

使用的.next()方法,通過添加新的行爲主體

+0

最後,它不起作用。我重新發表了一個答案。我正在嘗試使用.next方法 – Floriane