我有这个简单的代码即服务
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class SpotifyService {
constructor(private http: HttpClient) {
}
getQuery(query: string) {
const cabecera: HttpHeaders = new HttpHeaders({
'Authorization': 'Bearer BQDWZC2Y_iSV3rfmAhv-QxDpmhhJbbmgCnspy7HpIZPX5CbJ74D4Xl4aOyXLUL4smF2gZ_V3wiSXLxdLFPY'
});
const url = 'https://api.spotify.com/v1/' + query;
return this.http.get(url, { cabecera });
}
getNewReleases() {
return this.getQuery('browse/new-releases').pipe(map( data => data['albums'].items));
}
}
但是我遇到此错误,我不明白为什么。
类型'{cabecera:HttpHeaders; }'不可分配给 '{headers?类型的参数:HttpHeaders | {[header:string]: 字符串串[]; };观察?参数?:Ht ...'。宾语 文字只能指定已知属性,而'cabecera'不能指定 存在于类型'{标头中?:HttpHeaders | {[header:string]:字符串| 串[]; };观察?参数?:Ht ...'。
答案 0 :(得分:0)
您的return this.http.get(url, { cabecera });
行在语义上是不正确的,这意味着/解决了以下问题:
return this.http.get(url,
{ cabecera : new HttpHeaders({
'Authorization': 'Bearer BQDWZC2Y_iSV3rfmAhv-QxDpmhhJbbmgCnspy7HpIZPX5CbJ74D4Xl4aOyXLUL4smF2gZ_V3wiSXLxdLFPY'
})
});
这是错误的,因为传递给HTTP客户端的options对象不希望使用称为cabecera
的密钥,而是希望使用headers
的密钥。
因此,只需将行替换为return this.http.get(url, { headers: cabecera });