Angular 2依赖注入

时间:2015-11-13 19:31:32

标签: dependency-injection typescript angular typescript1.6

我已经阅读了几篇关于依赖注入的文章,似乎无法让它按照我认为的方式运行。根据我的阅读,您可以在类上使用@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的Typescript 1.6.2,angular 2 v2.0.0-alpha.46和systemjs v0.19.5。

1 个答案:

答案 0 :(得分:2)

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