Angular 2 依赖注入

Angular 2 Dependency Injection

我已经阅读了几篇关于依赖注入的文章,但似乎无法让它按照我认为应该的方式工作。根据我的阅读,您可以在 class 上使用 @Injectable 装饰器,然后像这样为 DI 创建元数据:

import {Hero} from './hero.model';
import {Injectable} from 'angular2/angular2'

@Injectable()
export class HeroService {
    constructor() {
        console.log('Hero Service Created');
    }
}

然后在您的组件中,您可以像这样在构造函数中使用它(通过适当的导入):

constructor(heroService: HeroService) {
    console.log('App Component Created');
}

但是,我收到以下错误:无法解析 AppComponent(?) 的所有参数。确保它们都有有效的类型或注释。

如果我从服务中删除 @Injectable 语法,而是使用这样的构造函数,我就能让它正常工作:

constructor(@Inject(HeroService) heroService: HeroService) {
    console.log('App Component Created');
}

根据我读过的所有内容,这些应该做同样的事情,但事实并非如此。关于为什么的任何想法?我在 VS 2013、angular 2 v2.0.0-alpha.46 和 systemjs v0.19.5.

中使用 Typescript 1.6.2

确保您已在 TypeScript 配置中指定 "emitDecoratorMetadata" 选项。