2017-04-04 5 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와 함께 사용하면 모든 행을 한 번에 가져옵니다. 것은 순차적으로 인쇄하고 싶습니다. –

0

은 내가 행 배열로 객체를 제공하는 방법을 변경하려고했습니다 대신

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

의 나는 이것을 사용했습니다 :

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

을하고 그냥 잘 작동하는 것 같다. 그래서 문제는 배열 초기화에있었습니다.