typescript - Angular - Hur man fixar felet 'egenskapen finns inte på typen'?
Jag följer denna videotutorial (textversionen av samma). Jag har följt exakt samma kod och jag får detta fel:
fel TS2339: Egenskapen 'getEmployees' finns inte på typen 'EmployeeService'
Jag tittade på Internet och besökte många frågor på Stack Overflow som denna, denna, denna och denna, och så många andra problem som öppnats relaterade till detta fel på GitHub.
Service:
//import statements go here ...
@Injectable()
export class EmployeeService {
private listEmployees: Employee[] = [
{
//just to avoid longer code, deleted dummy data.
},
];
getEmployees(): Employee[] {
return this.listEmployees; //ERROR in src/app/employees/list-employees.component.ts(14,44)
}
}
Komponentklass:
//import statements
@Component({
selector: 'app-list-employees',
templateUrl: './list-employees.component.html',
styleUrls: ['./list-employees.component.css']
})
export class ListEmployeesComponent implements OnInit {
employees: Employee[];
constructor(private _EmployeeService: EmployeeService) { }
ngOnInit() {
this.employees = this._EmployeeService.getEmployees();
}
}
Jag har importerat tjänsten i app.module.ts och lagt till den i providers-arrayen i ngModule.
Jag kan varken lösa felet eller förstå vad som orsakar detta fel.
Svar #1
Det händer vanligtvis när du utvecklar Angular-applikationer. För att lösa detta, stäng bara ner servern och starta den igen:
ng serve
Förklaring
Detta händer eftersom när du startar applikationen, serverar servern faktiskt paketen (JavaScript/CSS/HTML... utdatafiler) som lagras i dist-mappen. Ibland, när du gör ändringar i din kod, speglas inte ändringarna i dina paket, vilket leder till att servern fortfarande använder de gamla paketen.
Svar #2
Om allt som nämnts ovan är kontrollerat, kryssa för
constructor(private _employeeService: EmployeeService) { }privat, åtkomstspecifikatorn finns där. Samma problem kommer att uppstå när åtkomstspecifikatorn saknas.
