Angular “我总是得到”的回答;无法读取属性';GetEmployee';“未定义”的定义;在消费服务的同时
我对angular2很陌生,我想通过youtube学习angular2。 我试图在其他类中创建一个服务和消费。但是当我运行我的项目时,我总是得到“无法读取未定义的属性'GetEmployee'” 下面是我的代码 下面是我创建employee对象并返回的服务Angular “我总是得到”的回答;无法读取属性';GetEmployee';“未定义”的定义;在消费服务的同时,angular,typescript,Angular,Typescript,我对angular2很陌生,我想通过youtube学习angular2。 我试图在其他类中创建一个服务和消费。但是当我运行我的项目时,我总是得到“无法读取未定义的属性'GetEmployee'” 下面是我的代码 下面是我创建employee对象并返回的服务 import { Injectable } from '@angular/core' import { IEmployee } from './employee' @Injectable() export class Employ
import { Injectable } from '@angular/core'
import { IEmployee } from './employee'
@Injectable()
export class EmployeeService
{
GetEmployee(): IEmployee[]
{
return [
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary:
5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary:
5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary:
5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary:
5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary:
5500, dateOfBirth: '01/01/2010' }
];
}
}
在下面的代码中,我正在尝试使用该服务
import { Component } from '@angular/core'
import { IEmployee } from './employee'
import { EmployeeService } from './employee.service'
@Component
({
selector: 'list-Employee',
templateUrl: 'app/Employee/EmployeeList.component.html',
styleUrls: ['app/Employee/EmployeeList.component.css'],
providers: [EmployeeService]
})
export class EmployeeList {
selectedEmployeeCountRadioButton: string = 'All';
employees: IEmployee[];
private _emlployeeService: EmployeeService;
constructor(private _employeeService: EmployeeService) {
this.employees = [
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
];
alert(this._emlployeeService.GetEmployee());
// alert("asas")
// this.employees=this._emlployeeService.GetEmployee();
}
getEmployee(): void {
this.employees = [
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp01', name: 'Tom', gender: 'Male', annualSalary: 5500, dateOfBirth: '01/01/2010' },
{ code: 'emp08', name: 'Tomi', gender: 'FeMale', annualSalary: 5500, dateOfBirth: '01/01/2010' }
];
}
trackByEmpCode(empoyee: any): string {
return empoyee.code;
}
onRadioButtonSelectionChanged(selectedPerson: string): void {
this.selectedEmployeeCountRadioButton = selectedPerson;
console.log("This " + this.selectedEmployeeCountRadioButton);
}
getTotalEmployeeCount(): number {
return this.employees.length;
}
getTotalMaleEMployeeCount(): number {
return this.employees.filter(e => e.gender == "Male").length;
}
getTotalFemaleEMployeeCount(): number {
return this.employees.filter(e => e.gender == "FeMale").length;
}
}删除
私人电子邮件服务:员工服务代码>在构造函数上
通过执行构造函数(private employeeService:employeeService){
您已经声明了\uEmployeeService
属性。这里有两个问题
首先是打字错误,\u emlployeeseservice
其次是:
在您的EmployeeList
组件类中,您使用以下行声明一个新的EmployeeService
:
private _emlployeeService: EmployeeService;
这是不必要的,因为Angular的依赖项注入已经给了您一个EmployeeService
类的实例,您可以在这里的构造函数中请求它:
constructor(private _employeeService: EmployeeService)
您正在声明自己的实例已声明,但未实例化,因此它是未定义的
。在调用GetEmployee
方法的地方,正在使用的是未定义的EmployeeService
。感谢您的帮助。它在删除“private\u EmployeeService:EmployeeService;”