Vzhľadom na zdrojový kód úhlovej služby
@Injectable()
export class HomeContentService {
constructor(private http: HttpClient) { }
getContent(): Observable<string> {
let fileURI = "/assets/content/home.md";
let opt = { responseType: "text" };
return this.http.get<string>(
fileURI,
opt
);
}
povolania getContent()
by mal vrátiť Observable<string>
, Keď však bežím ng serve
, Dostávam Type "string" is not assignable to type "json"
.
Po niekoľkých pokusoch sa zdá, že webový balík kompiluje bez toho, aby som vykonal nejaké zmeny, ale problém sa stáva znova vždy, keď ukončím proces a pokúsim sa ng serve
znova.
Myslím, že niečo nie je v poriadku s mojím nastavením responseType: "text"
, ale neviem, čo to je. Googling nebol ani užitočný.
Nejaké nápady?
odpovede:
1 pre odpoveď č. 1vyskúšať let opt = { responseType: "text" as "text" };
vysvetlenie: https://github.com/angular/angular/issues/18586
0 pre odpoveď č. 2
Myslím, že u nešpecifikujete mapu. Skúste to:
getContent ( ) : Observable< string > {
return this.http.get( YOUR REF )
.map((res:Response) => res.text())
.catch((error:any) => Observable.throw(error.json().error || "Server error"));
}
v res.text u zadajte typ, ak bola odpoveď json ll "res.Json ()"
Sry pre špinavý anglický
0 pre odpoveď č. 3
Musíte zaradiť možnosti, pretože to je jediný spôsob, akým môže transpirer typu TypeScript vyvodiť, že chcete vrátiť typ Observable<string>
.
getContent(): Observable<string> {
let fileURI = "/assets/content/home.md";
return this.http.get(fileURI, { responseType: "text" });
}
Pozri tiež Http ResponseType nemožno nastaviť # 18586, pozri pripomienky od alxhub
.