2017-08-27 2 views
0

Ich versuche Seitenzahl und Seitengröße zu Webapi, senden, aber kein Parameter übergeben wird, habe ich die Anwendung in VS-Code debuggedd, PagingModel hat pageSize und PageNumber als Mitglied und sie beide haben Wert, aber wenn ich Chrome-Dev-Tool öffnen gibt es keine Parameter in der Anfrage URL ist da etwas falsch mit meinem Code?kann nicht senden Parameter mit Winkel http.get

getTasks(pagingModel: IPagingModel): Promise<TaskList> { 
    const url = this.taskUrl; 
    const params = new URLSearchParams(); 
    let option: RequestOptions; 
    // tslint:disable-next-line:forin 
    for (const key in pagingModel) { 
     params.set(key, pagingModel[key]); 
    } 

    option = new RequestOptions({search: params, params: params}); 

    return this.http.get(url, option) 
       .toPromise() 
       .then(response => response.json() as TaskList) 
       .catch(this.handleError); 
    } 

enter image description here

+0

'suche: params, params: params' - Das Aufrufen eines Parameternamens und seiner Variablen' params' ist ein riskanter Weg. –

+0

nur versuchen, es mit allen verfügbaren Option zu übergeben, – Arash

Antwort

0

mein Code war in Ordnung, ich hatte gerade URLSearchParams zu importieren

import { Headers, Http, RequestOptions, RequestOptionsArgs, URLSearchParams } from '@angular/http'; 

ich es nicht war Import vor, und ich weiß nicht warum, aber v code gab mir keinen Fehler.

1

Ich glaube nicht, es ist der beste Weg. Aber auch so arbeiten.

const url = this.taskUrl; 
url += '?'; 

Object.keys(pagingModel).forEach(key => { 
     url += `${encodeURIComponent(key)}=${encodeURIComponent(pagingModel[key])}&`; 
    }); 

return this.http.get(url) 
      .toPromise() 
      .then(response => response.json() as TaskList) 
      .catch(this.handleError); 

}

+0

das funktioniert, aber ich bin mir nicht sicher, ob dies der beste Weg ist. – Arash

+0

@Arash Ihr Code funktioniert für mich. Ich habe gerade 'params' Schlüssel nicht bestanden, nur' search' Taste passiert. Scheint, 'Params' Schlüssel ist kein gültiges Argument.new RequestOptions ({search: params});'. Und kann auch nicht verstehen, warum es nicht für Sie funktioniert – Rajez

0

Sie irgendeine Sache wie diese versuchen, können die neue HttpClientModule in Angular v4 mit

import {HttpParams} from "@angular/common/http"; 
const params = new HttpParams() 
    .set('pagenumber', '<your para>') 
    .set('pagesize', "<your para>"); 

this.http 
    .get("<requrl>", {params}) // mind this you dont have to use res.json() as httpClientModule has .json() by default 

wir bauen das HTTPParams Objekt durch Satz Chaining() methods.because HTTPParams ist unveränderlich und seine API-Methoden verursachen keine Objektmutation. Stattdessen wird durch einen Aufruf von set ein neues HttpParams-Objekt mit den neuen Werteigenschaften zurückgegeben.

Die folgende nicht funktionieren

params.set('pagenumber', '<para>') 
params.set('pagesize', "<para>"); 
+0

@ angular/common/http "hat keine exportierten Mitglied HttpParams – Arash

+0

@Arash müssen Sie die http-Client-Modul anstelle von http-Modul verwenden, fügen Sie den Import zu" HttpClientModule " Import Array von 'Ngmodule' –

+0

gleichen Fehler, \t @ Winkel/common/htt hat keine exportierte memebr HttpClientModule – Arash

Verwandte Themen