无法在Angular 5中将http响应作为字符串获取

时间:2017-12-01 18:25:45

标签: javascript angular typescript rxjs

给出源角度服务代码

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

  }

致电getContent()应该返回Observable<string>。但是,当我运行ng serve时,我会获得Type 'string' is not assignable to type 'json'

经过几次尝试,webpack似乎编译得很好而没有我做任何更改,但是当我关闭进程并再次尝试ng serve时,问题又会再次发生。

我想我的设置responseType: 'text'有问题,但我不知道它是什么。谷歌搜索也没有帮助。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

尝试let opt = { responseType: 'text' as 'text' };

说明:https://github.com/angular/angular/issues/18586

答案 1 :(得分:1)

您必须内联选项,因为这是TypeScript转换器可以推断您希望返回类型Observable<string>的唯一方法。

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

另请参阅See code in use here,请参阅alxhub所做的评论。

答案 2 :(得分:0)

我认为你没有指定地图。试试这个:

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

你指定类型,如果响应是json ll是&#34; res.Json()&#34;

Sry for the bad english