我有一个变量'消息'包含来自对话的消息:
messages: Observable<Message[]>;
我填写了我的变量&#39;消息&#39;像这样:
const newMessage = new Message(objMessage);
newThread.messages = Observable.of([newMessage]);
我希望我的lastMessage变量自动包含&#39;消息中的最后一条消息。变量:
lastMessage: Message = null;
这是我所做的,它不起作用:
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'
答案 0 :(得分:1)
您也可以使用.last();
运算符
来源
的例子var source = Rx.Observable.range(0,10).last();
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
如果你不想要那个,你必须摆脱那个阵列,我不确定你在这里想要实现的是什么