/ / Impossible d'obtenir une réponse http sous forme de chaîne dans Angular 5 - javascript, angular, typescript, rxjs

Impossible d'obtenir une réponse http sous forme de chaîne dans Angular 5 - javascript, angular, typescript, rxjs

Étant donné le code de service angulaire source

@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
);

}

Appel getContent() devrait retourner un Observable<string>. Cependant, quand je cours ng serve, Je reçois Type "string" is not assignable to type "json".

Après quelques essais, Webpack semble bien compiler sans que je fasse des modifications, mais le problème se reproduit à chaque fois que je ferme le processus et que j'essaie de ng serve encore.

Je suppose que quelque chose ne va pas avec mon réglage responseType: "text", mais je ne sais pas ce que c'est. Googler n'a pas été utile non plus.

Des idées?

Réponses:

1 pour la réponse № 1

Essayer let opt = { responseType: "text" as "text" };

Explication: https://github.com/angular/angular/issues/18586


0 pour la réponse № 2

Je pense que vous ne spécifiez pas de carte. Essaye ça:

getContent ( ) : Observable< string > {
return this.http.get( YOUR REF )
.map((res:Response) => res.text())
.catch((error:any) => Observable.throw(error.json().error || "Server error"));
}

dans res.text u spécifiez le type, si la réponse était json, il sera "res.Json ()"

Sry pour le mauvais anglais


0 pour la réponse № 3

Vous devez insérer les options en ligne car c’est la seule façon pour le transpiler TypeScript de déduire que vous souhaitez renvoyer le type. Observable<string>.

getContent(): Observable<string> {
let fileURI = "/assets/content/home.md";
return this.http.get(fileURI, { responseType: "text" });
}

Voir également Http ResponseType ne peut pas être défini # 18586, se référer aux commentaires de alxhub.