gpt4 book ai didi

angular - 为什么 Angular2 不能注入(inject)我的服务?

转载 作者:太空狗 更新时间:2023-10-29 18:09:02 25 4
gpt4 key购买 nike

我正在编写一个 plnkr 来测试一些路由问题,突然弹出此错误消息,并且无论我在代码中更改什么都不会消失:

EXCEPTION: Error: Uncaught (in promise): Can't resolve all parameters for EmployeeListComponent: (?).

这是代码的相关部分:

export class EmployeeListComponent {
employees: Employee[];
constructor(private _employeeService: EmployeeService) {
_employeeService.getAll().subscribe(employees =>
this.employees = employees);
}
}

所以 Angular 似乎无法解析 EmployeeService,对吗?我在上面的代码片段中注释掉了它,果然没有错误。

我是否忘记在 main.tsapp.component.ts 中注册它?不,

import {
Component
} from '@angular/core';

import {
ROUTER_DIRECTIVES
} from '@angular/router';

import {
EmployeeService
} from './employee.service';


@Component({
selector: 'plk-app',
template: '<router-outlet></router-outlet>',
directives: [
ROUTER_DIRECTIVES
],
providers: [
EmployeeService
]
})
export class AppComponent {

}

我应该在 main.ts 中注册它吗?好吧,当那个错误第一次出现时我遇到了,然后我将它移动到 app.component.ts 以检查是否可以修复它,但它没有。

目前我只见树木不见森林,Angular 的错误消息并没有真正帮助(他们从来没有帮助过)。这里有人可以发现问题吗?可以找到plnkr here .

最佳答案

在访问了几个问题后,我才知道这个问题的发生是因为没有 TypeScript 编译器。如果您不使用 typescript 编译器,则需要使用来自“@angular/core”的“Inject”显式注入(inject)服务。我已经在你提供的 plunker 中尝试过它及其工作。

在您的情况下,您需要在 employee-list.component.ts 中进行更改。从 @angular/core 导入 Inject 并在构造函数中显式注入(inject)您的服务,如:

constructor(@Inject(EmployeeService) private employeeService: EmployeeService){}

如果您觉得解决方案对您有帮助,请随时提出任何问题并接受我的回答。

关于angular - 为什么 Angular2 不能注入(inject)我的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38626244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com