/ / Nie je možné získať odpoveď http ako reťazec v jazyku Angular 5 - javascript, angular, typcript, rxjs

Nemožno získať odpoveď http ako reťazec v jazyku Angular 5 - javascript, angular, typcript, rxjs

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ď č. 1

vyskúš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.