2017-04-04 12 views
0

空の配列があり、行と呼ばれ、* ngForで表示します。配列の各行に、httpリクエストからの応答を渡します。すべてのhttp要求は順次呼び出されます。配列が正しく供給されても、* ngForは決して更新されません。私は要求応答を受け取った時点で各行を順次表示したいと思う。角2 * ngforは、順次HTTP要求応答で更新されません。

<div class="row" > 
    <my-rows 
     *ngFor="let row of rows | keys; trackBy: trackByFn; let index = index" 
     [month]='row.value' 
     [title]='row.key'> 
    </my-rows> 
</div> 
getRerports(url: string, dates: any, id: any){ 
    let params = new URLSearchParams() 
    params.set('company_id',id) 
    params.set('date',dates[0]) 
    this.authHttp.get(this._getReportsUrl,{search:params}) 
     .subscribe(
      data=>{ 
       let formatedDate = moment(data.json().date,'YYYY-MM-DD').format('MMMM YYYY') 
       this.rows[formatedDate] = data.json() 
       dates.splice(0,1) 
       this.flag = false 
       if(dates.length>0){ 
        this.getRerports(this._getReportsUrl,dates, id) 
       }else{ 
        this.flag=true 
       } 
      }, 
      err=> console.log(err) 
     ) 
} 

trackByFn(index:any, item:any) { 
    return index; 
} 
+0

もっとコードしてください。 – n00dl3

+0

httpリクエストの詳細を投稿してください。 – Pengyy

+0

@ n00dl3 http req –

答えて

0

使用ChangeDetectorRefビューが更新されていない場合。

constructor(private ref: ChangeDetectorRef) 

配列を更新するときにthis.ref.detectChanges()を使用します。

+1

を追加しました。動作しないようです。私は配列の更新のすぐ下に投稿しました。 –

+0

配列内の値を正しく取得していますか?更新されていないビューだけの場合は、これが機能します。 – RemyaJ

+0

アレイが正しく更新され、すべての要求が正常に完了しない場合外側のdivの* ngIfにflag変数を使用すると、すべての行が一度に取得されます。私がそれらを順番に印刷したいということです。 –

0

私は行の配列にオブジェクトを提供し、代わりに

this.rows[formatedDate] = data.json() 

の私は、この使用しまし方法を変更しようとしまし:

let object = {key:formatedDate, value: data.json()} 
       this.rows.push(object) 

をし、うまく動作するようです。 問題は配列の初期化にありました。

関連する問題