Angular2模块:如何从其他模块导入服务

Kim*_*lan 19 angular2-providers angular2-modules angular

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 {
}
Run Code Online (Sandbox Code Playgroud)

我需要导入ClinicFacilityService在另一个模块中声明的(apiClient.module)

这是否可能,如果不是为什么不可能.目前我正在这样导入ClinicFacilityService:

import { ClinicFacilityService } from './api-client-service/clinic-facility.service';
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 30

将模块添加到导入应该这样做

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

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

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

import { ClinicFacilityService } from './clinic-facility.service';
Run Code Online (Sandbox Code Playgroud)

@NgModule() importsTypeScript导入之间有明显的区别.

如果需要使用类名(ClinicFacilityService),则需要对该类进行TypeScript导入.这与完全无关@NgModule()

@NgModule({
  ...
  providers: [
    ClinicFacilityService
  ],
Run Code Online (Sandbox Code Playgroud)

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

@NgModule({
  imports: [
    ApiClientModule,
  ],
Run Code Online (Sandbox Code Playgroud)
  • TypeScript导入将唯一标识一个类.
  • NgModule导入用于定义模块依赖于另一个模块.

  • 非常有用的信息,re:Angular导入和TypeScript导入之间的区别 (2认同)