2016-07-24 4 views
1

オブジェクトのオブジェクトによってどのようにiteratemができますか(配列でなければなりません): Data structureAngular2 rc1 ngFor "オブジェクト 'オブジェクトの異なるオブジェクト[オブジェクトオブジェクト]を見つけることができません

Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

ビュー構造:

<a *ngFor="let msg of messages " href class="clearfix"> 
      <div class="img-area"><img [ngClass]="{'photo-msg-item': !msg.from}" 
            src="{{ (msg.from || (msg.from | baProfilePicture)) }}"></div> 
      <div class="msg-area"> 
      <div>{{ msg.message }}</div> 
      <span>{{ msg.send_date }}</span> 
      </div> 
     </a> 

コンポーネント:

public notifications:Array<Object>; 
    public messages:Array<Message>; 
    public data_error: Boolean = false; 
    constructor(private _baMsgCenterService:BaMsgCenterService) { 
     this.messages = this._baMsgCenterService.getMessages().subscribe(
     (messagess) => { 

      let result:Array<Message> = []; 
      if (messagess) { 
      messagess.forEach((message) => { 
      result.push(
       new Message(message[0], 
         message[1], 
         message[2], 
         message[3], 
         message[4]) 
       ); 
      }); 
     } 
     this.messages = result; 
     }, 
     err => { this.data_error = true} 
    ); 
+0

エラーライン番号を得る場所でも、繰り返し可能なデータを投稿できますか? ?あなたのコードの大部分を提供する方が良いでしょう。 –

答えて

1

I番目あなたの問題は、このラインに配置されているインク:あなたがあなたのmessages変数にSubscriptionオブジェクトを設定しようとしているようだ

this.messages = this._baMsgCenterService.getMessages().subscribe(

ですから、この辺を削除する必要があります(subscribe方法はSubscriptionオブジェクトhttps://github.com/ReactiveX/rxjs/blob/master/src/Observable.ts#L87を返します)効果。それは次のようになります。

hereを参照してくださいいくつかの "非同期" を追加

this._baMsgCenterService.getMessages().subscribe(
+0

多くの、多くのありがとう。それは私のばかげた間違いです。 –

+0

あなたは大歓迎です! – yurzui

0
<a *ngFor="let msg of messages | async " href class="clearfix"> 

してみてください。

関連する問題