2017-07-19 65 views
3

我正在構建一個Ionic 3應用程序(使用Angular 4)。我創建了一個LocationProvider,它允許我從實際的頁面邏輯中提取位置服務,以便它可以重用。有沒有辦法在Angular4中鏈接@Injectable()4

我的LocationProvider使用@ ionic-native/geolocation(地理定位提供程序)。

當我通過@NgModule({ providers: [LocationProvider] })將我的LocationProvider注入頁面時,出現錯誤,說明找不到地理定位提供程序。每當使用LocationProvider時,是否有任何方法可以包含地理位置提供程序?或者我需要始終擁有providers:[LocationProvider, Geolocation]

我猜這不是Ionic特定的(但是Angular 4),有沒有什麼辦法需要在NgModule中列出兩個提供商?

回答

1

providers接受單一提供者和提供者數組。

它可以

export const LOCATION_PROVIDERS = [LocationProvider, Geolocation]; 
... 
providers: [LOCATION_PROVIDERS] 
... 

提供商也可以用自己的模塊包裹和進口。

+0

當你說「提供者也可以被包裝......」時,你的意思是出口'@NMModule({providers:[LocationProvider,Geolocation]})'?然後通過'@NgModule({imports:[LocationProviderModule]})'導入'?我是否需要擔心導致地理位置導入10次或什麼? – Matt

+0

這是正確的。除非你正在處理懶惰的加載模塊,否則你無需擔心。所有常規模塊共享相同的噴油器請參閱https://stackoverflow.com/questions/39031284/angular-2-injector-hierarchy-and-ngmodule以供參考。 – estus

+0

這很有道理。那麼我需要擔心由子注射器存儲的值與主注射器不同嗎? (在ng4上找不到這個東西,只是看起來是在尋找原始的ng1東西) – Matt

相關問題