Javascript 以角速度访问可观测对象
我目前正在通过一些教程学习Angular,我遇到了一个问题。我不太明白为什么我的控制台给了我错误Javascript 以角速度访问可观测对象,javascript,angular,typescript,Javascript,Angular,Typescript,我目前正在通过一些教程学习Angular,我遇到了一个问题。我不太明白为什么我的控制台给了我错误 src/app/employee/employee.component.ts:17:24中的错误-错误TS2322:类型“IEEmployee”不可分配给类型“any[]”。17.订阅(数据=>this.employees=data) 这是我在教程中遵循的代码: export class EmployeeDetailComponent implements OnInit { public em
src/app/employee/employee.component.ts:17:24中的错误-错误TS2322:类型“IEEmployee”不可分配给类型“any[]”。17.订阅(数据=>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请求应该返回observable,带有我创建的IEEmployees接口类型,但除非我这样做,否则它不会工作。public employees:any=[]
。这确实解决了我的问题,但我不明白为什么,因为在教程中它没有它就可以工作。我的第二个问题是,当我使用http请求获取数据后,试图控制台记录我的employees数组,以查看它是什么类型的数据,但它似乎是空的(我尝试了this.employees[0].name
)。为什么我不能在ngOnInit()
中访问该数组,但在我的html文件中,我可以使用ngFor
访问对象属性。
这是IEEmployees接口
export interface IEmployee {
id: number,
name: string,
age : number
}
在声明employees数组时
这样做
公共雇员:IEEmployee=[]代码>
而不是这个
公共雇员=[]
这是因为您的服务正在重新调整类型为IEEMPLOYEE
的数据,而您在声明employees数组时使用的变量不是该类型的
这样做
公共雇员:IEEmployee=[]代码>
而不是这个
公共雇员=[]
这是因为您的服务正在重新调整类型为IEEMPLOYEE
的数据,而您正在使用的变量不是该类型的。因此this.employees
的值将在ngOnInit
完成后分配。ngFor
还能够在异步响应到达后显示属性值。。因此this.employees
的值将在ngOnInit
完成后分配。ngFor
还能够在异步响应到达后显示属性值。您似乎不确定是要接收单个Employee对象还是一个Employee数组
您已经在Employee服务中声明了getEmployees方法以返回一个可观察的
如果您的API返回一个Employees数组,请更改getEmployees方法,使其返回一个可观察的值
如果API返回单个Employee对象,请将arrow函数更改为以下内容:
data=>this.employees=[data]
要另外将输出记录到控制台,请将箭头功能更改为:
data=>{console.log(data);//设置this.employees;}您似乎不确定是要接收单个Employeer对象还是一个employees数组
您已经在Employee服务中声明了getEmployees方法以返回一个可观察的
如果您的API返回一个Employees数组,请更改getEmployees方法,使其返回一个可观察的值
如果API返回单个Employee对象,请将arrow函数更改为以下内容:
data=>this.employees=[data]
要另外将输出记录到控制台,请将箭头功能更改为:
data=>{console.log(data);//set this.employees;}我忘了提到这一点,但是我已经试过了,beofre,我在src/app/employee/employee.component.ts:12:10中得到了这个错误-错误TS2739:Type'undefined[]缺少类型'IEEmployeee'中的以下属性:id,name,12岁公共雇员:IEEmployeee=[]`然后检查,您的服务返回的数据属性和您声明的接口之间一定存在一些差异。我忘了提到这一点,但我已经尝试过了。beofre,我得到了这个“src/app/employee/employee.component.ts:12:10中的错误-错误TS2739:Type”未定义[]'缺少类型“IEmployee”中的以下属性:id、姓名、年龄12岁的公共雇员:IEmployee=[]`然后检查,您的服务返回的数据的属性和您声明的接口之间一定存在一些差异,这是有道理的,所以如果我想处理这些数据,我只能在subscribe方法中进行操作?是的,在收到响应时调用subscribe
的内容。您可以在那里操作接收到的数据。啊,这是有道理的,所以如果我想操作这些数据,我只能在subscribe方法中进行操作?是的,在接收到响应时调用subscribe
的内容。您可以在那里操作接收到的数据。