2016-12-30 167 views
1

你好,我一直在試圖找出大約2天,現在我看不出哪裏會出錯。我遇到了一些我不確定如何調試的錯誤。Angular 2依賴注入不起作用

無提供AppService服務

我已經在plunker

重建這個我覺得現在的問題是,我不註冊AppService服務anyware。

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ App ], 
    bootstrap: [ App ] 
}) 
export class AppModule {} 

Click Here For plunker

+0

另請參閱我的回答下面的評論,揭示了你的Plunker中的另一個問題。 –

+0

謝謝,這是問題的一部分。我仍然收到一個錯誤,但是不一樣。我也會研究它。 – JamTay317

回答

3
Injectable() 
export class AppService{ 

應該

@Injectable() 
export class AppService{ 
provoder:[AppService] 

應該

providers:[AppService] 

Plunker example

如果你想有一個單一的instan您的整個應用程序的服務將其添加到AppModule的提供商,如其他答案所示。如果你想要一個實例,每AppComponent(它通常也是你的整個應用程序的一個實例),然後保持它在哪裏。但是,在模塊級別提供的其他服務將無法以這種方式注入AppService

+0

即使沒有'@',Injectable()裝飾器也能工作,請問這是怎麼回事? –

+1

實際上,它並沒有檢查Plunker,而是在代碼中發現了另一個錯誤。構造函數缺少一個主體'{}',因此被忽略。如果類的構造函數具有參數,則只需要'@Injectable()'。在這種情況下,因爲構造函數被忽略,所以該類被視爲沒有構造函數(或者只有一個默認構造函數),而不需要裝飾器。 –

+0

謝謝你,PS:我不是問題的擁有者,但我問過你,因爲你是一個有角度的金牌。謝謝;) –

1

你必須AppService服務添加到providers陣列:

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ App ], 
    bootstrap: [ App ], 
    providers: [AppService] 
}) 
export class AppModule {} 

你可以閱讀更多關於Angular2依賴注入這裏:https://angular.io/docs/ts/latest/guide/dependency-injection.html

+0

這解決了重拳但不是我遇到的問題,我在我的機器上有一個問題。我會讀更多關於它。 – JamTay317

0

添加

providers: [AppService],

@NgModule如下:

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ App ], 
    providers: [ AppService ], 
    bootstrap: [ App ] 
}) 
export class AppModule {} 

你是對的,你需要聲明你的服務你的模塊可以使用它作爲一個DI。