J'ai des problèmes avec ces codes, j'ai créé un en-tête avec le bloc de code suivant
headers.append("Authorization",btoa(username+":"+password));
var requestOptions = new RequestOptions({headers:headers});
Mais si j'essaie d'utiliser ceci dans une méthode de publication dans ce
return this.http.post(url,JSON.stringify({username,password}),requestOptions)
.map(res=>res.json())
.map(res=>{
if(res){
localStorage.setItem("isLogged",res);
this.loggedIn =true;
}
return res;
});
Je prends ce message d'erreur
TypeScript Error
Argument of type 'RequestOptions' is not assignable to parameter of type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: Ht...'. Types of property 'headers' are incompatible. Type 'Headers' is not assignable to type 'HttpHeaders | { [header: string]: string | string[]; }'. Type 'Headers' is not assignable to type '{ [header: string]: string | string[]; }'. Index signature is missing in type 'Headers'.
J'ai essayé de changer Header () en HttpHeader () mais cela n'a pas aidé. Quel est le problème?
MIS À JOUR
J'ai supprimé l'objet requestOptions puis j'ai créé des en-têtes à partir de HttpHeaders ()
let headers = new HttpHeaders();
et utiliser cette valeur d'en-tête dans la méthode post en ce que
return this.http.post(url,JSON.stringify({username,password}), { options: { headers: headers; } })
.map(res=>res.json())
.map(res=>{
if(res){
localStorage.setItem("isLogged",res);
this.loggedIn =true;
}
return res;
});
alors obtenir cette erreur
[ts]
Argument of type '{ options: { headers: HttpHeaders; }; }' is not assignable to parameter of type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: Ht...'.
Object literal may only specify known properties, and 'options' does not exist in type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: Ht...'.
J'ai aussi essayé ça
return this.http.post(url,JSON.stringify({username,password}), { headers: headers })
.map(res=>res.json())
.map(res=>{
if(res){
localStorage.setItem("isLogged",res);
this.loggedIn =true;
}
return res;
});
alors j'ai eu une erreur sur le premier ".map"
[ts] Property 'map' does not exist on type 'Observable<Object>'.
La classe RequestOptions
devait être utilisée avec le module obsolète Http, et puisque vous obtenez cette erreur, je suppose que vous utilisez le module HttpClient.
Si vous souhaitez définir headers
à options
comme indiqué dans votre code, vous pouvez utiliser quelque chose comme ceci (version simplifiée de ce qui est affiché dans le Angular docs ):
request(url, { body }, { options: { headers?: HttpHeaders; } })
Cependant, vous pouvez également définir headers
directement, sans utiliser d'options. Cela ressemblerait à ceci:
request(url, { body }, { headers?: HttpHeaders; } )
@ angular/http est obsolète
Utilisez @ angular/common/http à la place
import { HttpHeaders } from '@angular/common/http';
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'my-auth-token'
})
};
addHero (hero: Hero): Observable<Hero> {
return this.http.post<Hero>(this.heroesUrl, hero, httpOptions)
.pipe(
catchError(this.handleError('addHero', hero))
);
}
Dans les services
En passant simplement plusieurs arguments
export interface Doctor {
license1d1: number;
firstname1: string;
experience1: number;
fee1: number;
qualification1: string;
lastname1: string;
specialization1: string; }
getDoctorsBydepartment(Hosp: number, Dept: number): Observable<Doctor[]> {
const url = 'http://192.168.75.15:8080/Booking/rest/List.do?'
ClinicID='+Hosp+'&DeptID='+Dept;
return this.http.get<Doctor[]>(url).pipe()
}
import {
Http,
Response,
Headers,
RequestOptions
} from '@angular/http';
private headers = new Headers({
'Content-Type': 'application/json',
'Authorization': localStorage.getItem('token')
});
private options = new RequestOptions({
headers: this.headers
});
private user: User;
constructor(private _http: Http) {}
getUserService() {
return this._http.get(this.baseUrl + '/user', this.options)
.map((response: Response) => response.json(),
error => error.json('erreur dans lurl'));
}