2016-09-09 11 views
0
sendMsg(msgToSend: string, reciepient: string){ 
    console.log(msgToSend, reciepient, this.user); 
    let newObj = {from: this.user['name'], msg: msgToSend}; 
    this.sub = this.route.params.subscribe(params => { 
     let name = reciepient; 
     this.service.getUser(name).then(user => this.reciepient = user); 
    }) 
    if(this.reciepient){ 
     console.log(this.reciepient['inbox']); 
     this.reciepient['inbox'].unshift(newObj); 
    } else { 
     console.log('Try again!!'); 
    } 

} 

私は二人のユーザ、RamSaiを持つユーザデータを持っている私のテンプレートObservableが正常に動作していませんangular2?

<input #reciepient placeholder="Reciepient"/> 
<input #message placeholder="Enter your message"/> 
<button (click)="sendMsg(message.value, reciepient.value)">Send message</button> 

を通じて法上呼び出しています。私はSaiにRamとSendingメッセージとしてログしました。受信者ボックスで私はSaiを言及し、メッセージボックスにメッセージを入力しました。送信メッセージをクリックすると、sendMsg()メソッドと同じように、メッセージはsaiの受信トレイにプッシュされません。これは、elseステートメントと印刷Try again!!にあるためです。 2番目の+クリックでは、そのプッシュが発生します。同様に、成功を一度押してください。受信者ボックスに名前が何も書かれていない場合は、初めてSaiとメッセージを押す前の値をクリックし、2回目のクリックはnull値をとり、コンソールメッセージTry again!!を表示します。 Observablesはasynchronuous仕事をしているので、あなたはコールバックへのサブスクリプションからのデータを必要とする任意のフォローアップのコードを配置する必要が私に

答えて

0

を助けてください:

sendMsg(msgToSend: string, reciepient: string){ 
    console.log(msgToSend, reciepient, this.user); 

    let newObj = {from: this.user['name'], msg: msgToSend}; 

    this.sub = this.route.params.subscribe(params => { 
     let name = reciepient; 

     this.service.getUser(name).then(user => { 
      this.reciepient = user; 

      if(this.reciepient){ 
       console.log(this.reciepient['inbox']); 
       this.reciepient['inbox'].unshift(newObj); 
      } else { 
       console.log('Try again!!'); 
      } 
     }); 
    }); 
} 
+0

は依然として同じ出力に –

+0

あなたはそれを試してみて、デバッグもらえを取得? Webブラウザを使用してデバッグするときにブレークポイントを設定し、すべての命令を実行することができます。 'F12'を押すだけで開発者ツールが起動し、' Sources'タブに切り替えてjsファイルを選択します。 – rinukkusu

関連する問題