如何使用Observables

时间:2018-10-24 16:38:40

标签: json angular angular-http

我正在使用ng-book作为参考,其中一个示例使用observable获取json数据,但是现在我想使用其他http://mindicador.cl/api API来为自己的项目检索数据 但出现错误“返回表达式类型不可分配给Observables类型”。我该如何解决?或如何使用可观察对象获取json数据?

import {
  Injectable,
  Inject
} from '@angular/core';
import {Observable} from 'rxjs';
import {HttpClient} from '@angular/common/http';
import {Indicadores} from '../indicadores/indicadores.model';

export const MINDICADOR_API = 'http://mindicador.cl/api';

@Injectable()
export class MindicadorService {
  constructor(private http: HttpClient, @Inject(MINDICADOR_API) private apiUrl: string) {
  }

  search(): Observable<Indicadores> {
    const queryUrl = this.apiUrl;
    return this.http.get(queryUrl)
      .subscribe((res) => {
        return new Indicadores()
      });
  }
}

2 个答案:

答案 0 :(得分:1)

您尝试从subscribe返回,而这往往会返回subscription对象。

似乎您想返回数据Observable<Indicadores>,因此<Indicadores>之后的http.get就足够了

search(): Observable<Indicadores> {
    const queryUrl = this.apiUrl;
    return this.http.get<Indicadores>(queryUrl);
}

答案 1 :(得分:1)

您需要从服务中返回可观察对象,如下所示:

search(): Observable<Indicadores> {
const queryUrl = this.apiUrl;
    return this.http.get(queryUrl)
    );
  }

然后在您的控制器中,使用.subscribe来获取数据