2017-08-11 65 views
1

我有一個包含從談話消息變量「消息」的最後一個變量:選擇可觀察到的流

messages: Observable<Message[]>; 

我填補我變「的消息」是這樣的:

const newMessage = new Message(objMessage); 
newThread.messages = Observable.of([newMessage]); 

我會就像我的lastMessage變量自動包含'messages'變量中的最後一條消息:

lastMessage: Message = null; 

Here我做了什麼,它不起作用:

const messagesThread: Thread = threads[message.thread.id]; 
     if (!messagesThread.lastMessage || 
     messagesThread.lastMessage.date < message.date) { 
     messagesThread.lastMessage = message; 
     } 

//////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////// 編輯

這是我的函數添加一個新的消息:

addNewMessage(objMessage: any) : void { 
    const flo: User = new User(objMessage.author, objMessage.site); 
    const newThread: Thread = new Thread(objMessage.id, [flo]); 
    const newMessage = new Message(objMessage); 

    objMessage.date = moment().toDate(); 

    newThread.messages = Observable.of([newMessage]); 
    newThread.messages.last().subscribe((message) => { 
     newThread.lastMessage = message; 
    });     //DOESN'T WORK 

    objMessage.thread = newThread; 

    this.addMessage(newMessage); 
    this.addThread(newThread); 
} 

我初始化我的變數如下:

messages: Observable<Message[]>; 
lastMessage: Message = null; 

我有這樣的錯誤:

Type 'Message[]' is not assignable to type 'Message' 

回答

1

也可以使用.last();操作者從源

VAR源= Rx.Observable.range(0,10)。去年();

var subscription = source.subscribe(
    function (x) { 
    console.log('Next: %s', x); 
    }, 
    function (err) { 
    console.log('Error: %s', err); 
    }, 
    function() { 
    console.log('Completed'); 
    }); 

// => Next: 9 
// => Completed 

這樣的:

newThread.messages.last().subscribe((message)=>{ 

     console.log('last messages',messages); 
    newThread.lastMessage = messages /// NOT that this is messages as an array 
}); 

注:

你有消息的Observable,所以每一個事件會給你一個message陣列,而不是一個message

如果你不不要那樣,你必須擺脫那個陣列,我不確定你在這裏試圖達到什麼樣的效果

+0

像這樣:'newThread.messages = Observable.of([newMessage]); newThread.lastMessage = newThread.messages.last();' 我有這個錯誤: '類型'Observable '不可分配給類型'消息'。 Property'id'缺少類型'Observable '。' – Floriane

+0

分享代碼請 – Milad

+0

我編輯了我的帖子 – Floriane