Angular 2-将Auth服务从AuthModule导出到AppModule
我决定将LoginComponent、AuthService、LoggedInGuard放在一个名为AuthModule的模块中:Angular 2-将Auth服务从AuthModule导出到AppModule,angular,angular2-services,angular2-modules,Angular,Angular2 Services,Angular2 Modules,我决定将LoginComponent、AuthService、LoggedInGuard放在一个名为AuthModule的模块中: import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { AuthComponent } from './auth.component'; import { LoginComponent } from './components
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 { }
我只想在应用程序的其余部分使用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 LoggedingGuard中,此代码行不可用:
import { LoggedInGuard } from './core/auth/auth.module';
它不编译,它说:
…auth/auth.module没有导出的成员“LoggedInGuard”
如果我将它指向正确的位置:
import { LoggedInGuard } from './core/auth/guards/logged-in.guard';
它进行编译,但显示以下运行时错误:
模块“AuthModule”导出的意外值“AuthService”
你有什么建议吗
提前感谢。
导出不适用于服务。将服务添加到提供商
就足够了。因此,从导出
中删除AuthService
和AuthGuard
导出
的目的是使组件、管道、指令和其他模块可供其他模块访问。因此,您需要添加AuthComponent
,并且LoginComponent
,以便能够在其他模块中使用它们
@NgModule({
imports: [
CommonModule
],
providers: [AuthService, LoggedInGuard],
declarations: [AuthComponent, LoginComponent],
exports: [AuthComponent, LoginComponent]
})
export class AuthModule { }
还请注意,将AuthModule
导入AppModule
,只会使组件对AppModule
中声明的其他组件可用。要使用这些组件的任何其他模块都应该导入AuthModule
@BoyanKostadinov您是指文件export
还是@NgModule.exports
。如果是后者的话,我想看看这方面的文档。如果是前者,我们在这里实际上是在谈论后者:-P@NgModule.providers
已经使其面向外部世界,在应用程序范围内sense@PaspRuby它们位于提供程序中
array@PaspRuby您需要1)将类导入组件类文件2)将服务注入组件的构造函数。将其添加到@NgModule.providers
中,可以为其他需要它的人注入服务。您需要从组件文件导入。为什么要尝试从模块文件导入它?要使组件/指令/管道能够在模板中使用。。。要使服务可注入。。。所有这些概念都与Angular应用程序相关,而不是与文件相关的东西