Javascript Can';在Angular 5中,无法以字符串形式获取http响应
给定源代码Javascript Can';在Angular 5中,无法以字符串形式获取http响应,javascript,angular,typescript,rxjs,Javascript,Angular,Typescript,Rxjs,给定源代码 @Injectable() 导出类HomeContentService{ 构造函数(私有http:HttpClient){} getContent():可观察{ 让fileURI='/assets/content/home.md'; 让opt={responseType:'text'}; 返回this.http.get( fileURI, 选择 ); } 调用getContent()应该返回一个可观察的。但是,当我运行ng service时,我得到的类型“string”不可分配给类
@Injectable()
导出类HomeContentService{
构造函数(私有http:HttpClient){}
getContent():可观察{
让fileURI='/assets/content/home.md';
让opt={responseType:'text'};
返回this.http.get(
fileURI,
选择
);
}
调用getContent()
应该返回一个可观察的。但是,当我运行ng service
时,我得到的类型“string”不可分配给类型“json”
几次尝试后,webpack似乎编译得很好,我没有做任何更改,但只要我关闭进程并再次尝试ng service
,问题就会再次出现
我猜我的设置responseType:'text'
有问题,但我不知道是什么。谷歌搜索也没有帮助
有什么想法吗?我想你没有指定地图。试试这个:
getContent ( ) : Observable< string > {
return this.http.get( YOUR REF )
.map((res:Response) => res.text())
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
getContent():可观察{
返回此.http.get(您的REF)
.map((res:Response)=>res.text())
.catch((error:any)=>Observable.throw(error.json().error | |“服务器错误”);
}
在res.text u中指定类型,如果响应是json,则将为“res.json()
Sry对于蹩脚英语您必须内联选项,因为这是TypeScript transpiler推断您想要返回类型可观察的
的唯一方法
getContent():可观察{
让fileURI='/assets/content/home.md';
返回this.http.get(fileURI,{responseType:'text'});
}
另请参见,请参考alxhub的评论
尝试让opt={responseType:'text'作为'text'};
解释:使用JSON.stringify(response)
问题发生在我可以调用任何结果之前。如果我返回JSON.stringify(this.http.get…)
,角度组件是否能够订阅可观察对象?此外,它不是JSON字符串,因此将其字符串化似乎是错误的。请求的文件只是标记文本。
getContent(): Observable<string> {
let fileURI = '/assets/content/home.md';
return this.http.get(fileURI, { responseType: 'text' });
}