Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 2-将Auth服务从AuthModule导出到AppModule_Angular_Angular2 Services_Angular2 Modules - Fatal编程技术网

Angular 2-将Auth服务从AuthModule导出到AppModule

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

我决定将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 { }
我只想在应用程序的其余部分使用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应用程序相关,而不是与文件相关的东西