2016-11-24 27 views
0

的特性「數據」是否可以發佈到URL app/heroes/1/jobs角2在內存中的Web API - 無法讀取空

當我嘗試,我得到了錯誤Cannot read property 'data' of null

createJob(hero: Hero, job: Job): Observable<Job> { 
    const url = `${this.heroUrl}/${hero.id}/jobs`; 
    return this.http.post(url, JSON.stringify(job), {headers: this.headers}) 
    .map(res => res.json().data) 
    .catch(this.handleError); 
} 

回答

2

目前不可能,沒有自定義它(這不是一件容易的事,但可行)。發生了什麼事是,1/jobs被認爲是heroes收集的ID,它會返回null,因爲下面是空

let heroes = [...] 
let id = '1/jobs' 
return heroes.find(hero => return hero.id === id); 

就像我說的,你可以自定義它,但它會採取一些工作。它將包括覆蓋parseUrl爲每個要覆蓋的HTTP方法添加一個響應攔截器或攔截器。你可以看到一個example。這在the docs中有所解釋。

我一直在關注這些問題,看起來維護人員覺得這更像是一個演示工具,不想花費太多時間來嘗試使這個功能強大且適合於在大多數情況下。所以他們只是使其可定製,即使定製不是一件容易的事情。

+0

感謝您的解釋 – locnguyen

-1

試試這個:

.map((res:Response) => res.json().data) 
+0

不起作用,同樣的錯誤 – locnguyen

+1

雖然這段代碼可以解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess