2016-12-22 16 views
1

Я совершенно новый для Angular 2 и Typcript и хочу создать приложение для поиска карт. В принципе у меня есть компонент, где данные ответа хранятся и наблюдаемый ...angular2 Как сохранить данные заголовка ответа с http.get в дополнительной переменной?

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

+0

Какие заголовки вам нужны? –

+0

Ссылка :, Размер страницы, количество, общий счетчик, Ratelimit-Limit и Ratelimit-Остальные в основном. URL-адрес API для запроса GET - https://api.magicthegathering.io/v1/cards, например – markiparki

+0

Лучший способ установки заголовков на бэкэнд. –

ответ

1

Хорошо, попробовав ошибку, я решил решить эту проблему: http.get с активированным компонентом службы -> служба ответила res.json() -> компонент только получил res в JSON, что, кажется, удаляет заголовок ответа. Мой обходной путь является:

Компонент:

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')) } 

Так полные разрешения получает передается обратно к компоненту в настоящее время.

Однако: какие-либо советы, чтобы сделать это лучше?