Angular2模块:如何从另一个模块导入服务

时间:2016-11-03 07:36:32

标签: angular angular2-modules angular2-providers

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';

import { ClinicFacilityService } from './apiClient.module';


@NgModule({
  imports: [
    CommonModule,
    FormsModule
  ],
  declarations: [
    DailyScheduleComponent,
  ],
  providers: [
    ClinicFacilityService
  ],
  exports: [
    DailyScheduleComponent
  ],
})
export class ClinicDashboardModule {
}

我需要导入在另一个模块(ClinicFacilityService

中声明的apiClient.module

这是否可能,如果不是为什么不可能。目前我正在导入ClinicFacilityService,如下所示:

import { ClinicFacilityService } from './api-client-service/clinic-facility.service';

2 个答案:

答案 0 :(得分:24)

将模块添加到导入应该

import { ApiClientModule } from './apiClient.module';

@NgModule({
  imports: [
    ApiClientModule,
    CommonModule,
    FormsModule
  ],
  declarations: [
    DailyScheduleComponent,
  ],
  exports: [
    DailyScheduleComponent
  ],
})
export class ClinicDashboardModule {
}

否则导入包含服务类的文件

import { ClinicFacilityService } from './clinic-facility.service';

@NgModule() imports与TypeScript导入之间存在明显区别。

如果您需要使用类名(ClinicFacilityService),则需要对该类进行TypeScript导入。这与@NgModule()

完全无关
@NgModule({
  ...
  providers: [
    ClinicFacilityService
  ],

如果需要@NgModule()导入,则模块类(ApiClientModule)的类名需要TypeScript导入,因为需要传递模块。

@NgModule({
  imports: [
    ApiClientModule,
  ],
  • TypeScript导入将唯一标识一个类。
  • NgModule导入用于定义模块依赖于另一个模块。

答案 1 :(得分:0)

这是一个过时的帖子,但出于其他原因,我发现此article非常全面,可以完全回答这个问题。提示:请参阅该文章的导入服务部分。