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> –