从Angular5 http.get返回observable

时间:2018-03-01 09:10:07

标签: angular

我有一个界面

export interface IEmployee{
  id: string;
  first_name: string;
}

在我的employee.service.ts

  getEmployess():Observable<IEmployee>{
    return this._http.get<IEmployee>(this._dataUrl);
  }

在我的组件中

  employees:Array<IEmployee>;   

  constructor(private _employeeService:EmployeeService){
    this._employeeService.getEmployess()
      .subscribe(
        (data) => {
          this.employees = data;
          console.log(data);
        }
      )
  }

我认识错误 [ts] Type&#39; IEmployee&#39;不能分配给&#39; IEmployee [] []&#39;。

我无法理解什么是错的。我希望服务中返回的数据应存储在employees数组中。

请帮忙。

2 个答案:

答案 0 :(得分:2)

返回

 getEmployess():Observable< Array<IEmployee>>{
    return this._http.get<Array<IEmployee>>(this._dataUrl);
  }

getEmployess():Observable< IEmployee[]>{
    return this._http.get<IEmployee[]>(this._dataUrl);
  }

答案 1 :(得分:1)

问题原因:

this.employees = data;  
// this.employees is type of IEmployee[]
// data is type of IEmployee

解决方案 - &gt;只需改变:

getEmployess():Observable<IEmployee>

getEmployess():Observable<IEmployee[]>{
// OR
getEmployess():Observable<Array<IEmployee>>{
  

当您获得IEmployee的数组时,您已经定义了   employees:Array<IEmployee>;