Angular 2 http.get()url的动态值为params?

时间:2017-05-19 10:20:02

标签: angular typescript

如何将url参数(查询字符串)作为

传递给HTTP请求
let params: URLSearchParams = new URLSearchParams();

params.set('pageId', 0);
params.set('activeFilter', 1);

let requestOptions = new RequestOptions();
requestOptions.search = params;

return this._http.get("http://testsite.com/cats/page/", requestOptions ).map(res => res.json());

在我的requestOptions引用中我希望传递的内容如下:pageId /:activeFilter。

最后我需要构建一个url,使用此url(http://testsite.com/cats/page/:pageId/:activeFilter)// pageId = 0,activeFilter = 1

来调用我的rest api服务器

我必须只绑定值而不是整个字符串?

我尝试了很多。但它没有像我预期的那样出现,这就是我在服务器控制台中得到的/ cats / page /?pageId = 0& activeFilter = 1。

有什么建议吗?无法找到我错的地方

2 个答案:

答案 0 :(得分:2)

ECMA6提供了一个非常有趣的功能" String Interpolation"其中string可以有占位符,我们根据需要替换它们。

<强>实施例

let first = 'Jane';
let last = 'Doe';
console.log(`Hello ${first} ${last}!`);

在您的情况下,它将是:

let param1 = 'someval1';
let param2 = 'someval2'
this._http.get(`http://testsite.com/cats/page/${param1}/${param2}`, requestOptions ).map(res => res.json());

答案 1 :(得分:1)

如果你想将这些值传递给url,你应该将它们直接放入url字符串中,如下所示:

@Injectable()
export class ExampleService {

  constructor(
    private http: Http
  ) { }

  getPage(pageId: number, activeFilter: number) {
    return this.http.get(`http://testsite.com/cats/page/${pageId}/${activeFilter}`)
                    .map(res => res.json())
  }

}

请注意,您正在使用``来允许字符串插值。

您可以通过传入pageId和activeFilter来动态调用此服务方法,如下所示:

从'@ angular / core'导入{Component,OnInit};    从'./example.service'导入{ExampleService};

@Component({
  selector: 'example',
})

export class ExampleComponent implements OnInit {
  constructor(
    private exampleService: ExampleService
  ) { }
  currentPageId = 0;
  activeFilter = 1;

  ngOnInit() { }

  getPage() {
    this.exampleService.getPage(this.currentPageId, this.activeFilter)
  }
}

希望澄清事情。祝你好运!