javascript - 在 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
}
解决方案
在声明您的员工数组时,
做这个
public employees: IEmployee = [] ;
而不是这个
public employees = []
;
这是因为您的服务正在重新调整类型的数据,IEmployee
而您正在使用的变量不是该类型
推荐阅读
- c# - MS Bot 框架中意图的对话管理
- abap - 更改 ABAP 报告中的列名
- c++ - 为什么这个 operator< 重载函数对 STL 算法不可见?
- django - 如何在 Django REST 框架的 ListAPIView 中使用多个值过滤一个字段?
- vue.js - 为什么加入时未触发 onstream(RTCMulticonnection)?
- azure-language-understanding - 我们可以在 LUIS 列表模型的同义词中使用正则表达式吗?
- javascript - 每次输入文本更改时调用函数
- python - Python Rock Paper Scisssors 将字符串分配给随机变量
- sql - 无法在 SQL Server Manager Express 2005 中插入多行
- email - 在 C 面板中转写电子邮件时如何添加电子邮件签名