web-dev-qa-db-ja.com

Angular2モジュール:別のモジュールからサービスをインポートする方法

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';
19
Kimaina Allan

モジュールをインポートに追加する必要があります

_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のインポートでは、モジュールが別のモジュールに依存することを定義します。
28