1
我已经阅读了几篇关于依赖注入的文章,似乎无法按照我认为它应该的方式工作。从我已阅读,你可以使用一个类@Injectable装饰,然后将元数据为DI创建像这样:Angular 2依赖注入
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。
这是我唯一能想到的。 @Rob这里是一个简单的服务与工作DI基本plunker。汽车部件使用汽车服务。 http://plnkr.co/edit/8ILuwhtxAP3g9o6u6jAQ?p=preview –
这让我朝着正确的方向前进。由于我在visual studio中开发并编译我的TS文件,所以我不得不将其添加到我的csproj文件中: $(TypeScriptAdditionalFlags)--emitDecoratorMetadata TypeScriptAdditionalFlags> –
更好的是,将它添加到您的csproj文件,以便在保存时编译,而不仅仅在构建时编译: true TypeScriptEmitDecoratorMetadata> –