2017-08-11 90 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