【问题标题】:Angular 2 http.get with paramsAngular 2 http.get 与参数
【发布时间】:2016-11-23 08:55:40
【问题描述】:

我想在 GET 请求中发送查询参数。我的班级是这样的:

 @Injectable()
 export class Loader implements TranslateLoader{
  constructor(private http: Http){
   }
   getTranslation(lang: string): Observable<any>
   {
     return this.http.get(routes.Localization.Get) ;// in that place I need to pass params
   }
 }

我该怎么做?

【问题讨论】:

标签: angular typescript http


【解决方案1】:

您可以为此利用URLSearchParams 类:

getTranslation(lang: string): Observable<any> {
  let params = new URLSearchParams();
  params.set('param1', 'value1');

  return this.http.get(routes.Localization.Get, { search: params });
}

这将导致这样的 URL(参数添加到查询字符串中):http://...?param1=value1

查看该类的文档:

它现在提供对编码/解码参数的支持。

【讨论】:

【解决方案2】:

这很简单 - 你可以定义你的 URLSearchParams 并将它们传递给 http.get 方法的第二个参数:

import { URLSearchParams } from '@angular/http'

let params: URLSearchParams = new URLSearchParams();
params.set('param1', 'someValue');
params.set('param2', 'someValue');

return this.http.get(routes.Localization.Get, { search: params });

【讨论】:

  • 记得在顶部添加这一行:import { URLSearchParams } from '@angular/http';
  • 这个混蛋有我!
【解决方案3】:

当这样的网址http://stackoverflow.com?param1=value

您可以通过以下代码获取param1:

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';

@Component({
    selector: '',
    templateUrl: './abc.html',
    styleUrls: ['./abc.less']
})
export class AbcComponent implements OnInit {
    constructor(private route: ActivatedRoute) { }

    ngOnInit() {
        // get param
        let param1 = this.route.snapshot.queryParams["param1"];
    }
}

【讨论】:

  • 这个问题很老了。它还询问如何设置参数,而不是如何读取它们。
  • 对不起,标题是“Angular 2 http.get with params”。我只关注标题(只有 GET 没有 SET)。如有遗漏请忘记。
  • 问题是指为http.get请求设置参数
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多