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