2017-04-18 52 views
1

我有了下面的方法服務:查看數據之前被渲染,請在ngOninit

public GetContactPage() { 
    const url = 'http://localhost:3421/api/case?caseId=' + this.caseId + '&page=/contact'; 

    const headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 
    return this._http.get(url, { headers: headers }) 
     .map(response => { 
      console.log(response.json()); //data is here 
      response = response.json(); 
     }); 
} 

我的看法就是

<div *ngIf="case"> 
<div [innerHtml]="case"></div> 
</div> 

這裏是ngOnInit對我的看法:

ngOnInit() { 
     return this._caseService.GetContactPage().subscribe(data => { 
     this.case = data; //data is undefined 
    }); 
    } 

在ngOnInit中,數據是未定義的。我懷疑這是因爲數據尚未從服務器返回,因此我的視圖不呈現。即使數據返回,它仍然不呈現。我認爲模型更改時更新視圖。

回答

2
.map(response => { 
     console.log(response.json()); //data is here 
     response = response.json(); 
    }); 

丟失而沒有subscribe()返回

.map(response => { 
     console.log(response.json()); //data is here 
     return response.json(); 
    }); 

不會收到任何數據。

+0

啊,我覺得很愚蠢......你又救了我一次。出於某種原因,我認爲外部的回報是處理...對不起我的JavaScript糟透了。 – xaisoft

+0

:D,沒什麼可擔心的。 'response => {...}'本身就是一個函數,只返回這個函數的返回值。 –

+1

是的,我一直忘記resp => {..}是一個回調,只是簡寫語法?所以這個函數返回到外部函數,然後外部函數返回到ngOnInit ...正確? – xaisoft