É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 № 1Essayer 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
.