首页 > 解决方案 > 在 Angular 中访问 Observable 对象

问题描述

我目前正在通过一些教程学习 Angular,但遇到了一个问题。我不太明白为什么我的控制台给我错误 ERROR in src/app/employee/employee.component.ts:17:24 - error TS2322: Type 'IEmployee' is not assignable to type 'any[]'.17 .subscribe(data => this.employees = data); 这是我从教程中遵循的代码:

export class EmployeeDetailComponent implements OnInit {

  public employees = [];

  constructor(private _employeeService : EmployeeService) { }

  ngOnInit(): void {
    this._employeeService.getEmployees()
    .subscribe(data => this.employees = data);
    console.log(this.employees);
  }

}

Http 请求应该返回我创建的 IEmployees 接口类型的 observable,但除非我这样做,否则它不起作用public employees:any = []。这确实解决了我的问题,但我不明白为什么,因为在教程中它可以在没有它的情况下工作。我的第二个问题是,当我通过 http 请求获取数据后尝试控制台记录员工数组,以查看它是什么类型的数据,但它似乎是空的(我this.employees[0].name也尝试过)。为什么我不能在其中访问该数组,ngOnInit()但在我的 html 文件中我可以使用它ngFor并访问对象属性。这是 IEmployees 接口

export interface IEmployee {
    id: number,
    name: string,
    age : number
}

标签: javascriptangulartypescript

解决方案


在声明您的员工数组时,

做这个

public employees: IEmployee = [] ;

而不是这个

public employees = [];

这是因为您的服务正在重新调整类型的数据,IEmployee而您正在使用的变量不是该类型


推荐阅读