web-dev-qa-db-fra.com

Module Angular2: Comment puis-je importer un service à partir d'un autre module

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 {
}

J'ai besoin d'importer ClinicFacilityService qui est déclaré dans un autre module (apiClient.module)

Est-ce même possible, sinon pourquoi ce n'est pas possible. En ce moment j'importe ClinicFacilityService comme ceci:

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

L'ajout du module aux importations devrait faire

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

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

sinon importez le fichier qui contient la classe de service

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

Il existe une distinction claire entre @NgModule()imports et les importations TypeScript.

Si vous devez utiliser le nom de classe (ClinicFacilityService), une importation TypeScript de cette classe est requise. Ceci n'a aucun rapport avec @NgModule()

@NgModule({
  ...
  providers: [
    ClinicFacilityService
  ],

Si l'importation @NgModule() est requise, le nom de classe de la classe de module (ApiClientModule) nécessite une importation TypeScript car le module doit être transmis.

@NgModule({
  imports: [
    ApiClientModule,
  ],
  • Les importations TypeScript doivent identifier de façon unique une classe.
  • Les importations NgModule doivent définir qu'un module dépend d'un autre module.
28