2017-12-20 7 views
-1

Ich versuche herauszufinden, wie Sie mit Kopfzeilen auf HttpHeaders umgehen, um sie für HTTP-Anfragen über HttpClient zu verwenden.Wie setze ich Header auf HttpHeaders in angular 5

const headers = new HttpHeaders(); 
headers.append('foo', 'bar'); 
headers.set('foo', 'bar'); 

console.log(headers.get('foo')) // null 

es funktioniert nur auf diese Weise:

const headers = new HttpHeaders().set('foo', 'bar'); 
console.log(headers.get('foo')) // bar 

Gibt es eine spezielle Art und Weise Header hinzufügen? Oder ist es ein Fehler?

+0

[Aktivieren Sie diese] (https://github.com/angular/angular/issues/19044) –

Antwort

0

Dies funktioniert für mich:

import { Injectable } from '@angular/core'; 
import { HttpClient, HttpHeaders } from '@angular/common/http'; 
import { Observable } from 'rxjs/Observable'; 

const url = `https://sampleapi.com`; 

@Injectable() 
export class BasicService { 
    private _headers = new HttpHeaders().set('Content-Type', 'application/json'); 
    constructor(private httpClient: HttpClient) { } 

    getWithHeader(): Observable<any> { 
    const headers = this._headers.append('foo', 'Bar'); 
    return this.httpClient.get<any>(url, { headers : headers }); 
    } 
} 

Dies beginnt mit einer privaten Variable, die den anfänglichen Satz von Headern halten, set verwenden. Dann verwendet append, um einen zusätzlichen Header hinzuzufügen, bevor Sie den HTTP-Aufruf ausführen.

Beachten Sie, dass append ein HttpHeaders-Objekt zurückgibt, weshalb ich die Ausgabe einer Konstante zuweisen. Nur append von selbst ausgeführt, denken, dass die bestehende _headers wird geändert werden, wird Ihnen nicht die Ergebnisse geben, die Sie erwarten könnten. Ich habe bestätigt, dass HttpHeaders unveränderlich sind.

EDIT: Von der HttpHeaders docs: Unveränderlichen Satz von Http-Header, mit faulen Parsing.

Verwandte Themen