2017-02-20 35 views
0

http.get我無法弄清楚如何重寫這個AngularJS $ http.get到Angular2:Angular2從外部API

$scope.toggle = function() { 
$http.get('http://example.com?operation=getEmployeeData', { 
    params: { 
     data: JSON.stringify({ 
     params: { 
      firstName : 'John', 
      lastName : 'Doe', 
      empType : 'Administrative', 
      orgUnit : 'Management', 
      lang  : 'Eng' 
     } 
     }) 
    } 
    }).then(function(data) { $scope.staff = data } 

該如何與參數的URL看起來像:

http://example.com?operation=getEmployeeData&data= {「params」:{「firstName」:「John」,「lastName」:「Doe」,「empType」:「Administrative」,「orgUnit」:「Management」,「lang」:「Eng」}}

我如何在Angular2中做到這一點? 謝謝!

回答

2

在Angular2中Http.GET與AngularJS非常相似,但對於傳遞url參數,您必須在@angular/http包內使用URLSearchParams
你想要做什麼:

let params: URLSearchParams = new URLSearchParams(); 
params.set("data",JSON.stringify({ 
     params: { 
      firstName : 'John', 
      lastName : 'Doe', 
      empType : 'Administrative', 
      orgUnit : 'Management', 
      lang  : 'Eng' 
     } 
     })); 
//Make the call and return an observable 
return this.http.get(SomeVar.MY_URL, params) 
     .toPromise() 
     ... 
1

這是後/獲取例子。只是使用方法作爲職位或取決於您的要求。

您需要用您調用的方法名稱替換methodname。

private url = "http://example.com"; 

methodname(resource1: String,resource2: String,resource3: String,resource4: 
String,resource5: String){ 

let body = JSON.stringify({"firstName":resource1,"lastName":resource2, 
"empType":resource3,"orgUnit":resource4,"lang":resource5}); 

let headers = new Headers({ 'Content-Type': 'application/json' }); 
let options = new RequestOptions({ headers: headers, method: "post/get" }); 

return this.http.get/post(this.url,body,options) 
     .map(this.extractData) 
     .catch(this.handleError); 
}