Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 2 GET参数保持为空_Angular_Typescript - Fatal编程技术网

Angular 2 GET参数保持为空

Angular 2 GET参数保持为空,angular,typescript,Angular,Typescript,嗨,我想在GET请求中发送参数,但我的搜索参数仍然为空,这是我的代码: private jwt2() { let currentUser = JSON.parse(localStorage.getItem('currentUser')); console.log('current.token ' + currentUser.token); let params: URLSearchParams = new URLSearchPar

嗨,我想在GET请求中发送参数,但我的搜索参数仍然为空,这是我的代码:

        private jwt2() {
        let currentUser = JSON.parse(localStorage.getItem('currentUser'));
        console.log('current.token ' + currentUser.token);

        let params: URLSearchParams = new URLSearchParams();        //PARAMS
        params.set('pageSize', '6');            //pageSize

        let headers = new Headers({ 'Authorization': currentUser });
        console.log("params: " + params);    //here I can see correct params

        return new RequestOptions({ headers: headers, search: params });
        //  }
    }
我可以在chrome中看到正确的标题,但无法看到搜索参数:

search
URLSearchParams
paramsMap
Map(0)
size(0)
__proto__
Map
[[Entries]]
Array(0)
length(0)
如果我没有设置参数并手动将参数写入搜索选项,如下所示:
returnnewrequestoptions({headers:headers,search:'pageSize=6'})

它可以工作

尝试检索函数外部的数据,这样当组件加载时,它将在调用
Get请求
之前存在

用于设置LocalStorageData的函数

private get currentUser(): string {
      return localStorage.getItem('currentUser');
    }
myCurrentUser = JSON.parse(this. currentUser);
检索数据

private get currentUser(): string {
      return localStorage.getItem('currentUser');
    }
myCurrentUser = JSON.parse(this. currentUser);
获取请求

private setDefaultPaymentMethod(payid: string) {
        const params: URLSearchParams = new URLSearchParams();
        params.set('currentUser', this.myCurrentUser);
        return this.http.get('Path/URL/End?point'
            { search: params })
            .map((res: Response) => res.json())
            .subscribe((res) => {
                console.log(res);
            });
    }

尝试在函数外部检索数据,以便在组件加载时,它将在调用
Get请求之前存在

用于设置LocalStorageData的函数

private get currentUser(): string {
      return localStorage.getItem('currentUser');
    }
myCurrentUser = JSON.parse(this. currentUser);
检索数据

private get currentUser(): string {
      return localStorage.getItem('currentUser');
    }
myCurrentUser = JSON.parse(this. currentUser);
获取请求

private setDefaultPaymentMethod(payid: string) {
        const params: URLSearchParams = new URLSearchParams();
        params.set('currentUser', this.myCurrentUser);
        return this.http.get('Path/URL/End?point'
            { search: params })
            .map((res: Response) => res.json())
            .subscribe((res) => {
                console.log(res);
            });
    }
问题在于:

RequestOptions({ headers: headers, search: params });
因为如果我用这样的字符串

RequestOptions({ headers: headers, search: 'pageSize=6' });
它可以工作,在chrome中,我看到以下选项:

{"method":null,"headers":{"Authorization":["Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkYW5pZWxlIiwiaXAiOiI3OS4xLjMzLjEzOCIsImV4cCI6MTQ5MTM4MDIyMn0.Z9Y2l7-VDE_Rd8jEqhZ2Sdpx-is5nBeRamtkYrRtt_4oGWXomkhg6-ig87BL0PI5kL11sLf24lpytK8YDeiWMQ"]},"body":null,"url":null,"params":{"rawParams":"pageSize=6","queryEncoder":{},"paramsMap":{}},"withCredentials":null,"responseType":null}
如果我使用参数,我的rawParams将保持为空

问题在于:

RequestOptions({ headers: headers, search: params });
因为如果我用这样的字符串

RequestOptions({ headers: headers, search: 'pageSize=6' });
它可以工作,在chrome中,我看到以下选项:

{"method":null,"headers":{"Authorization":["Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkYW5pZWxlIiwiaXAiOiI3OS4xLjMzLjEzOCIsImV4cCI6MTQ5MTM4MDIyMn0.Z9Y2l7-VDE_Rd8jEqhZ2Sdpx-is5nBeRamtkYrRtt_4oGWXomkhg6-ig87BL0PI5kL11sLf24lpytK8YDeiWMQ"]},"body":null,"url":null,"params":{"rawParams":"pageSize=6","queryEncoder":{},"paramsMap":{}},"withCredentials":null,"responseType":null}

如果我使用params,我的rawParams将保持为空

尝试使用params.toString()


尝试使用params.toString()


我遇到了相同的问题,因为我没有导入URLSearchParams

import { URLSearchParams } from '@angular/http';
如果不显式导入URLSearchParams,则可以完成,但参数请求为空

另外请注意,RequestOptions属性search已被弃用,您应该使用参数

RequestOptions({ headers: headers, params : myParams })
代替

RequestOptions({ headers: headers, search : params })
使用params.toString()的解决方案是一个很好的解决方案,因为requestoptions参数也可以是字符串或URLSearchParams:

export interface RequestOptionsArgs {
    url?: string | null;
    method?: string | RequestMethod | null;
    /** @deprecated from 4.0.0. Use params instead. */
    search?: string | URLSearchParams | {
        [key: string]: any | any[];
    } | null;
    params?: string | URLSearchParams | {
        [key: string]: any | any[];
    } | null;
    headers?: Headers | null;
    body?: any;
    withCredentials?: boolean | null;
    responseType?: ResponseContentType | null;
}

它通过传递字符串来避免问题。在这种情况下,没有必要使用URLSearchParams。

我遇到了相同的问题,因为我没有导入URLSearchParams

import { URLSearchParams } from '@angular/http';
如果不显式导入URLSearchParams,则可以完成,但参数请求为空

另外请注意,RequestOptions属性search已被弃用,您应该使用参数

RequestOptions({ headers: headers, params : myParams })
代替

RequestOptions({ headers: headers, search : params })
使用params.toString()的解决方案是一个很好的解决方案,因为requestoptions参数也可以是字符串或URLSearchParams:

export interface RequestOptionsArgs {
    url?: string | null;
    method?: string | RequestMethod | null;
    /** @deprecated from 4.0.0. Use params instead. */
    search?: string | URLSearchParams | {
        [key: string]: any | any[];
    } | null;
    params?: string | URLSearchParams | {
        [key: string]: any | any[];
    } | null;
    headers?: Headers | null;
    body?: any;
    withCredentials?: boolean | null;
    responseType?: ResponseContentType | null;
}

它通过传递字符串来避免问题。在这种情况下,使用URLSearchParams是没有意义的。

我的问题不是currentuser,我的问题是pageSize参数没有传递到RequestOptions,因此get请求无法看到正确的参数pageSize参数,pageSize参数应该不带“6”,因此,换言之,这是不带“”的6,它在任何地方都应该是整数,但它是字符串吗?我不认为这是集合声明
set(name:string,value:string):void否,我的意思是你正在处理发送到的服务器上的代码吗?另外,请检查chrome工具中的“网络”选项卡,单击请求,然后复制并粘贴标题和响应选项卡。我的问题不是currentuser,我的问题是pageSize参数没有传递到RequestOptions中,因此get请求看不到正确的参数页面大小param应该没有'6',所以这是没有''的6,换句话说,它应该是一个整数,不管它在哪里结束,但它是字符串吗?我不认为这是集合声明
set(name:string,value:string):void不,我的意思是你正在处理发送到的服务器上的代码吗?你也可以检查chrome工具中的网络选项卡,单击请求,然后复制并粘贴标题和响应选项卡。这并不能回答你的问题。。。你只需进一步阐述你的问题。答案应该提供实际的解决方案:)好吧,这是答案吗?从我看来,这不是一个答案吗?你的参数还是空的?也许我很困惑:这并不能回答你的问题。。。你只需进一步阐述你的问题。答案应该提供实际的解决方案:)好吧,这是答案吗?从我看来,这不是一个答案吗?你的爱人还空着?也许我很困惑:D
import { URLSearchParams } from '@angular/http';