为什么Angular2不能注入我的服务?

前端之家收集整理的这篇文章主要介绍了为什么Angular2不能注入我的服务?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个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.ts或app.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’来显式注入服务.我已经尝试过你提供的plunker及其工作.

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

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

如果您发现该解决方案对您有帮助,请随意提出任何问题并接受我的回答.

猜你在找的Angularjs相关文章