如何从Angular 6中的另一个模块导入服务

时间:2018-12-12 21:13:32

标签: angular typescript angular6 angular-module

技术:使用角度6,角度cli和打字稿。

场景

我有一个 app模块和一个核心模块

我希望我的应用程序模块组件使用核心模块中的服务。

我的核心模块包含服务列表:

import { NgModule } from '@angular/core';

// Services
import { AuthService } from './services/auth.service';

@NgModule({
  declarations: [
  ],
  imports: [
  ],
  providers: [
    AuthService
  ]
})
export class CoreModule { }

这是我的应用模块:

import { BrowserModule } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { NgModule } from '@angular/core';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';

import { AppComponent } from './app.component';

// Modules
import { CoreModule } from './core/core.module';

// Sections
import { COMPONENTS } from './components/index';
import { ROUTES } from './app.routes';

@NgModule({
  declarations: [
    AppComponent,
    COMPONENTS
  imports: [
    CommonModule,
    FormsModule,
    BrowserModule,
    HttpClientModule,
    ReactiveFormsModule,
    RouterModule.forRoot(ROUTES),
    CoreModule
  ],
  providers: [
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

注意:如您所见,我正在导入CoreModule。

这是我来自app模块的组件(它调用核心模块以获取AuthService):

import { Component } from '@angular/core';

// This Auth Service import not working (says service not exported)
import { AuthService } from '../../core/core.module';

@Component({
  selector: 'app-contact',
  templateUrl: './contact.component.html'
})
export class ContactComponent {

  constructor(
    private authService: AuthService
  ) {}
}

问题:我正在尝试将服务导入我的名为contact component的应用程序模块组件中,如下所示:

import { AuthService } from '../../core/core.module';

我收到错误:

服务不是核心模块的导出成员。

结果:我希望我的app模块中的联系人组件能够导入名为AuthService的核心模块服务。

2 个答案:

答案 0 :(得分:2)

由于您将CoreModule导入了AppModule,在此您还对ContactComponent进行了降级(COMPONENTS中似乎有),所以这两项服务均 >和 component 在这里属于同一个 Module ,因此它们可以互相看到。在您的ContactComponent中要做的仅仅是从其真实位置(而不是AuthService)导入服务../../core/core.module

import { AuthService } from ' <...>/auth.service';

答案 1 :(得分:0)

如果模块在根模块中正确导入,我认为如果您在 mymodule.module.ts 中添加“export ... from ...”:

import { MystuffService } from file 'mystuff.service'. 
export { MystuffService } from file 'mystuff.service'.

然后您可以导入您的服务:

import { MystuffService } from 'mymodule.module'