簡體   English   中英

Angular 2 - 將Auth服務從AuthModule導出到AppModule

[英]Angular 2 - Exporting Auth Services from AuthModule to AppModule

我決定將LoginComponent,AuthService,LoggedInGuard放在一個名為AuthModule的模塊中:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AuthComponent } from './auth.component';
import { LoginComponent } from './components/login/login.component';

import { AuthService } from './services/auth/auth.service';
import { StorageService } from './services/storage/storage.service';
import { RequestService } from './services/request/request.service';

import { LoggedInGuard } from './guards/logged-in.guard';

@NgModule({
  imports: [
    CommonModule
  ],
  providers: [AuthService, LoggedInGuard],
  declarations: [AuthComponent, LoginComponent],
  exports: [AuthService, LoggedInGuard]
})
export class AuthModule { }

我想在Application的其余部分中僅使用AuthService方法。 和LoggedInGuard保護非公共路線。

所以我嘗試在AppModule中導入它們:

import { AuthModule } from './core/auth/auth.module';

@NgModule({
  declarations: [AppComponent, HomeComponent],
  imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    HttpModule,
    AuthModule,
    RouterModule.forRoot(routes)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

但在app.routes.ts中,LoggedInGuard不適用於以下代碼行:

import { LoggedInGuard } from './core/auth/auth.module'; 

它沒有編譯,它說:

... auth / auth.module沒有導出成員'LoggedInGuard'

如果我把它指向正確的位置:

import { LoggedInGuard } from './core/auth/guards/logged-in.guard';

它編譯,但顯示以下運行時錯誤:

模塊'AuthModule'導出的意外值'AuthService'

你有什么建議我嗎?

提前致謝。

exports不是為了服務。 將服務添加到providers就足夠了。 因此,從exports刪除AuthServiceAuthGuard

exports 目的是使組件,管道,指令和其他模塊可以訪問其他模塊。 因此,您需要添加AuthComponentLoginComponent ,以便能夠在其他模塊中使用它們。

@NgModule({
  imports: [
    CommonModule
  ],
  providers: [AuthService, LoggedInGuard],
  declarations: [AuthComponent, LoginComponent],
  exports: [AuthComponent, LoginComponent]
})
export class AuthModule { }

還要注意的是導入AuthModuleAppModule ,不僅使提供給申報的其他組件的組件AppModule 任何其他想要使用這些組件的模塊都應該導入AuthModule

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM