2016-11-26 24 views
0

Noob to Angular2。私はwhatsappクローンのチュートリアルに従っており、このエラーに遭遇しました。角度タイプ 'Observable <Message[]>'は 'Observable <Message[]>'タイプに割り当てられません

タイプ 'Observable'は、 'Observable'タイプに割り当てられません。プロパティ 'source'は保護されていますが、タイプ 'Observable'は 'Observable'から派生したクラスではありません。私はthis.messagesが、予想とは異なるタイプであるので、次のコードを受け入れることが、私は、私はそれを作るためにそれを変更する方法についてはそれほどよく分からないので、新しいだとされていないことを理解し

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

} 

受け入れ。どんな助けでも大歓迎です。ありがとうございました!

+0

混合クラスやインタフェースではありませんされているん '「../../../ API /コレクション/ chatsCollection」'別のプロジェクトを参照してください。 ?別の 'node_modules'ディレクトリでは?そうであれば、2つの 'rxjs'パッケージは同じものと見なされないので、それは問題です。したがって、タイプエラーです。パッケージが同じ名前を共有するだけでは不十分です。それらがディスク上の別の場所にある場合、それらは異なっています。 – cartant

+0

私のルートディレクトリ内の@cartant私は自身のnodes_modulesを含むapiフォルダを持っています。そのフォルダは流星バックエンド専用です。私はこのチュートリアルのhttp://agapan-meteor.com/tutorials/whatsapp2/に従っています。私は後でチュートリアルで、api/node_modules/rxjsにあるrxjsから流星観測可能なものをインポートする必要があることを知っています。私はチュートリアルの残りの部分を実行して、それがうまくいくかどうかを確認して、あなたが何を言っているかを確認する必要があります。 – RickD

答えて

0

必ず観測可能とメッセージ作りは両方とも同じ場所から輸入し、両方が

+0

ObservableとMessageは同じ場所からどうやって来るのですか?私はちょっと混乱している。 – RickD

+0

あなたのコードが、すべてのメッセージへの参照が同じメッセージクラスを参照していて、別のものではなくメッセージインターフェイスを参照しているというメッセージを参照していることを確認してください – danday74

関連する問題