2016-11-26 66 views
0

Noob to Angular2。我正在关注whatsapp克隆的教程并遇到了此错误。角度类型'Observable <Message[]>'不可分配为类型'Observable <Message[]>'

类型'Observable'不可分配为键入'Observable'。属性'源'受到保护,但类型'可观察'不是从'可观察'派生的类。

import { Component, OnInit } from '@angular/core'; 
import { NavParams } from 'ionic-angular'; 
import { Chat, Message } from "api/models/chatsModel"; 
import { Messages } from "../../../api/collections/chatsCollection"; 
import { Observable } from "rxjs"; 

/* 
    Generated class for the Messages page. 

    See http://ionicframework.com/docs/v2/components/#navigation for more info on 
    Ionic pages and navigation. 
*/ 
@Component({ 
    selector: 'page-messages', 
    templateUrl: 'messages.html' 
}) 
export class MessagesPage implements OnInit { 

    selectedChat: Chat; 
    title: string; 
    picture: string; 
    messages: Observable<Message[]>; 

    constructor(navParams: NavParams) { 
    this.selectedChat = <Chat>navParams.get('chat'); 
    this.title = this.selectedChat.title; 
    this.picture = this.selectedChat.picture; 
    } 

    ngOnInit() { 
    let isEven = false; 

    this.messages = Messages.find({chatId: this.selectedChat._id}, 
     { sort: {createdAt: 1} } 
     ).map((messages: Message[]) => { 
      messages.forEach((message: Message) => { 
       message.ownership = isEven ? 'mine' : 'other'; 
       isEven = !isEven; 
      }); 
      return messages; 
     }); 
    } 

} 

我明白this.messages不接受的代码之后,因为这是一个不同类型的于预期,但是,我感到很新的,我不太确定如何改变它,使其接受。任何帮助是极大的赞赏。谢谢!

+0

不'“../../../ API /收藏/ chatsCollection”'引用另一个项目?用另一个'node_modules'目录?如果是这样,那就是问题所在,因为两个'rxjs'包不会被视为相同 - 因此类型错误。软件包共享相同的名称是不够的,如果它们驻留在磁盘上的不同位置,则它们是不同的。 – cartant

+0

@cartant在我的根目录中我有一个包含它自己的nodes_modules的api文件夹,该文件夹专用于流星后端。我正在学习本教程http://angular-meteor.com/tutorials/whatsapp2/。我后来在教程中知道,它需要我从位于api/node_modules/rxjs中的rxjs导入流星可观测数据。我会按照教程的其余部分来看看它是否能解决问题,以确认你在说什么我认为。 – RickD

回答

0

确保可观察和消息都来自同一个地方进口,都是类或接口不混合

+0

Observable和Message如何来自同一个地方?我对此有点困惑。 – RickD

+0

确保您的代码是否指向消息的所有引用都指向相同的消息类而不是不同的消息接口 – danday74

相关问题