2016-05-18 36 views
8

Come posso inviare i parametri di chiamata GET utilizzando angolare 2 ho provato in questo modo, ma ottenere un certo errore dicendo,parametri passando HTTP GET utilizzando angolare 2

Argument of type '{ params: URLSearchParams; }' is not assignable to parameter of type 'RequestOptionsArgs'. 
    Object literal may only specify known properties, and 'params' does not exist in type 'RequestOptionsArgs'. 

funzione di chiamata:

import {Http, Response, Headers, RequestOptions, URLSearchParams} from 'angular2/http'; 
import 'rxjs/Rx'; 

constructor(private nav: NavController, public http: Http) { 
    onLogin(value: string): void { 
     if(this.authForm.valid) { 
      this.userData.login(); 
      let params = ''; 
      let options = new RequestOptions({ 
       // Have to make a URLSearchParams with a query string 
       params: new URLSearchParams('validateUsr=false') 
      }); 
      this.http.get('https://itunes.apple.com/us/rss/topmovies/limit=1/json', options) 
      .map(res => res.json()) 
      .subscribe(
      data => {}, 
      err => this.logError(err), 
      () => this.validateUser() 
     ); 

      this.nav.push(AccountViewPage); 
     } 
     } 

necessario passare il parameres come questo,

params: { 
    validateUsr: "false" 
} 

risposta

24

Se si desidera inviare que parametri ry all'interno di una richiesta GET, utilizzano l'attributo search al posto del params uno:

constructor(private nav: NavController, public http: Http) { 
} 

onLogin(value: string): void { 
    if(this.authForm.valid) { 
     this.userData.login(); 
     let params = ''; 
     let options = new RequestOptions({ 
      // Have to make a URLSearchParams with a query string 
      search: new URLSearchParams('validateUsr=false') // <----- 
     }); 
     this.http.get('https://itunes.apple.com/us/rss/topmovies/limit=1/json', options) 
     .map(res => res.json()) 
     .subscribe(
     data => {}, 
     err => this.logError(err), 
     () => this.validateUser() 
    ); 

     this.nav.push(AccountViewPage); 
    } 
} 
+4

nel caso in cui vi state chiedendo dove per recuperare URLSearchParams da: import {} URLSearchParams da '@ angolare/http'; – emp

+0

Cosa succede se ho un oggetto param JS ?? – Toolkit

+0

@Toolkit Dai un'occhiata alla mia risposta qui sotto se vuoi passare un oggetto param JS. L'oggetto params JS non può essere utilizzato direttamente nella richiesta GET, ma può essere utilizzato per creare l'oggetto params che può essere utilizzato. – jbgarr

11

Thierry's answer è grande, ma nel caso in cui le persone stanno cercando di creare una funzione che può accettare un oggetto JS di params per essere passato, Volevo aggiungere un'opzione espansa. Nella seguente funzione, data è un oggetto JS facoltativo di coppie chiave/valore che è possibile passare alla funzione. Verrà quindi iterato e ciascuna coppia chiave/valore verrà aggiunta all'oggetto helper URLSearchParams (params). Una volta che l'oggetto params è stato creato, può essere trasferito alla richiesta GET come proprietà search nell'oggetto RequestOptions (options).

handleGet(service:string, data?:any):Observable<any[]> { 
    let params = new URLSearchParams(); 
    for(let key in data) { 
     params.set(key, data[key]); 
    } 
    let options = new RequestOptions({ 
     search: params 
    }); 
    return this._http.get(service, options) 
     .map(this._extractData) 
     .catch(this._handleError) 
     .finally(() => { 
      // do something... 
     }); 
} 
Problemi correlati