问题
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 {
}
I need to import ClinicFacilityService
that is declared in another module (apiClient.module
)
Is this even possible, if not why is not possible. At the moment i am importing ClinicFacilityService
like this:
import { ClinicFacilityService } from './api-client-service/clinic-facility.service';
回答1:
Adding the module to imports should do
import { ApiClientModule } from './apiClient.module';
@NgModule({
imports: [
ApiClientModule,
CommonModule,
FormsModule
],
declarations: [
DailyScheduleComponent,
],
exports: [
DailyScheduleComponent
],
})
export class ClinicDashboardModule {
}
otherwise import the file that contains the service class
import { ClinicFacilityService } from './clinic-facility.service';
There is a clear distinction between @NgModule()
imports
and TypeScript imports.
If you need to use the class name (ClinicFacilityService
) then a TypeScript import of that class is required. This is entirely unrelated to @NgModule()
@NgModule({
...
providers: [
ClinicFacilityService
],
If the @NgModule()
import is required, then the class name of the module class (ApiClientModule
) requires a TypeScript import because the module needs to be passed.
@NgModule({
imports: [
ApiClientModule,
],
- TypeScript imports are to to uniquely identify a class.
- NgModule imports are to define that a module depends on another module.
回答2:
This is kinda old post but for the sake of others, I find this article very comprehensive and fully answers this question. Hint: see Importing services section of that article.
来源:https://stackoverflow.com/questions/40396070/angular2-module-how-can-i-import-a-service-from-another-module