2017-12-03 261 views
0

我想通過使用xml2js將XML字符串轉換爲JSON,然後我需要發送和訂閱另一個組件的結果。解析XML到JSON和訂閱與Angular4

getLastWeekSnow = function(){ 
let headers = new Headers(); 
headers.append('Access-Control-Allow-Origin', '*'); 
headers.append("Authorization", "Basic " + btoa('user' + ":" + 'password')); 
headers.append('Content-Type' , 'application/x-www-form-urlencoded');  
return this.http.get(`${this.APIUrl}`, {headers:headers}) 
.map(res => { 
    xml2js.parseString(res.text(), function (err, result) { 
    console.dir(result); //Prints JSON object! 
}); 
}) 
.subscribe(data => { 
console.log(data); //Undefined !   
}); 
} 

所以console.dir(reults)給我回什麼,我需要,但在認購(執行console.log(數據))我得到了一個未定義。

爲什麼我會在訂閱中獲得undefined,但在.map中獲取正確的Object?

回答

2

確保返回數據,否則就不能訂閱

getLastWeekSnow = function(){ 
let headers = new Headers(); 
headers.append('Access-Control-Allow-Origin', '*'); 
headers.append("Authorization", "Basic " + btoa('user' + ":" + 'password')); 
headers.append('Content-Type' , 'application/x-www-form-urlencoded');  

return this.http.get(`${this.APIUrl}`, {headers:headers}) 
.map(res => { 
    let data; 
    xml2js.parseString(res.text(), function (err, result) { 
    console.dir(result); //Prints JSON object! 
    data = result 
}); 
return data; 
}) 
.subscribe(data => { 
console.log(data); //Undefined !   
}); 
} 
+1

這解決了這個問題對我來說。謝謝 ! – KLTR

+0

沒問題的人,不要忘記標記爲答案! –