是否需要注入角度2的位置服务?

时间:2018-01-24 21:50:13

标签: angular dependency-injection

我正在查看教程{{3}}。

(滚动到最底部的位置" HeroDetailComponent",然后选择标签hero-detail.component.ts)

为了使用位置服务,它所做的就是从@ angular / common导入位置,将它放在构造函数参数中,以及它的位置。它没有把它放在提供者数组中,也没有放在模块的提供者数组中。是否有些服务只是自动注入而没有在providers数组中指定它?

1 个答案:

答案 0 :(得分:0)

这是因为本教程使用的是RouterModule。 RouterModule为您提供LocationLocationStrategy服务,因此您无需在AppModule中提供它们。 src code

// Router Module providers array
providers: [
    ROUTER_PROVIDERS, // Location service is provided in this array
    {
        provide: LocationStrategy,
        useFactory: provideLocationStrategy,
        deps: [
            PlatformLocation, [new Inject(APP_BASE_HREF), new Optional()], ROUTER_CONFIGURATION
        ]
    },
    ...
],

如果您没有使用RouterModule,那么您必须自己提供。像

这样的东西
// app.module.ts
providers: [
    Location, 
    {provide: LocationStrategy, useClass: PathLocationStrategy}
]