我已经阅读了几篇关于依赖注入的文章,似乎无法让它按照我认为的方式运行。根据我的阅读,您可以在类上使用@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。
答案 0 :(得分:2)
确保在TypeScript配置中指定了“emitDecoratorMetadata”选项。