2017-07-19 31 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

相关问题