1

我已经阅读了几篇关于依赖注入的文章,但似乎无法让它按照我认为的方式工作。根据我的阅读,您可以在类上使用 @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');
}

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

4

1 回答 1

2

确保您在 TypeScript 配置中指定了“emitDecoratorMetadata”选项。

于 2015-11-13T19:53:50.007 回答