2017-03-31 92 views
0

我使用@angular/cli。通過創建一個名爲services的文件夾來驗證我使用驗證服務的表單,然後運行ng g service validate。 兩個文件創建和內部validate.service,我寫了一些驗證功能。然後我把它imported到我的另一個文件,並創建了constructor內的情況下使用類似下面this關鍵字調用它。錯誤:沒有提供程序ValidateService

constructor(private vd : ValidateService) { } 

然後我檢查ng serve。所以它提供以下錯誤

ERROR Error: Uncaught (in promise): Error: No provider for ValidateService! 

一些說,這束被打破,它會很快修復並代替其使用的開發包。這是什麼。我不知道在app.module.ts

+0

需要設置[商]在@Component。 –

+0

我該怎麼做,爲什麼要這樣做。這是最新的方式 – Jobs

+0

是,西港島線請你把組件文件的代碼,所以如果你想要每個組件實例一個服務實例,我可以建議你最好 –

回答

2

使用提供程序文件類似

@NgModule({ 
    imports: [], 
providers: [ValidateService] 
}) 
+0

我們以前沒做過。它這個最新的東西 – Jobs

+0

@harnish沒有。它一直是這樣的。服務總是需要提供的,而CLI從未決定在哪裏做。 –

2

有兩種方法可以做到這一點,做的最新方法:

第一:

@NgModule({ 
    imports: [], 
providers: [ValidateService] 
}) 

第二個:

@Component({ 
    selector: 'countries', 
    providers: [ValidateService] 
}) 

這取決於要求。

如果您希望每個組件實例有一個服務實例,請將其添加到組件的 提供程序中。如果你想爲 整個應用程序的唯一實例,將其添加到NgModule的供應商。這包括在 有關服務和依賴注入的文檔中。

正如@JB Nizet在評論部分解釋

相關問題