[英]Rewriting services from Angular2 to Angular6 "Unexpected module 'HttpClientModule' declared by the module '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
刪除AuthService
和AuthGuard
。
exports
目的是使組件,管道,指令和其他模塊可以訪問其他模塊。 因此,您需要添加AuthComponent
和LoginComponent
,以便能夠在其他模塊中使用它們。
@NgModule({
imports: [
CommonModule
],
providers: [AuthService, LoggedInGuard],
declarations: [AuthComponent, LoginComponent],
exports: [AuthComponent, LoginComponent]
})
export class AuthModule { }
還要注意的是導入AuthModule
到AppModule
,不僅使提供給申報的其他組件的組件AppModule
。 任何其他想要使用這些組件的模塊都應該導入AuthModule
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.