angular2如何在额外变量中存储来自http.get的响应头数据?

时间:2016-12-22 19:16:41

标签: http angular get header response

我对Angular 2和Typescript很陌生,想要建立一个Card-Search应用程序。 基本上我有一个组件,其中存储和观察响应数据......

this.searchFormGroup.valueChanges
  .debounceTime(200)
  .distinctUntilChanged()
  .switchMap(searchFormGroup => this.mtgService.getCardsByName(searchFormGroup))
    .subscribe(
      searchResult => { 
        this.searchResult = searchResult.cards;
      },
      err => {
        console.log(err);
      });

...和一个服务,它将http.get请求发送到API ...

getCardsByName(searchFormGroup){
   this.params.set(...) ...

   return this.http.get(this.nameUrl, { search: this.params })
     .map(res => res.json())
     .catch((error:any) => Observable.throw(error.json().error || 'Server error'))}

......彼此沟通。

从组件内部的请求中存储标头数据的最佳方法是什么?基本上我需要请求的总卡数和分页链接,它们在响应头中可用。我已经试图找到解决方案几个小时了:o

1 个答案:

答案 0 :(得分:1)

好的尝试并且错误让我解决了这个问题: 组件激活服务的http.get - >服务响应res.json() - >组件只有JSON中的res,似乎删除了响应头。 我的解决方法是:

组件:

this.searchFormGroup.valueChanges
  .debounceTime(200)
  .distinctUntilChanged()
  .switchMap(searchFormGroup => this.mtgService.getCardsByName(searchFormGroup))
    .subscribe(
      res => { 
        console.log(res.headers); //works fine now!
        this.searchResult = res.json().cards;
      },
      err => {
        console.log(err);
      });

服务:

getCardsByName(searchFormGroup){
   this.params.set(...) ...

   return this.http.get(this.nameUrl, { search: this.params })
     .catch((error:any) => Observable.throw(error.json().error || 'Server error')) }

因此,完整的res现在会传回组件。

但是:有什么提示可以让它更好吗?