я решил поставить LoginComponent, AuthService, LoggedInGuard внутри модуля под названием AuthModule:Угловое 2 - Экспорт Auth Services из AuthModule в AppModule
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 LoggedInGuard не доступен с этой строки кода:
import { LoggedInGuard } from './core/auth/auth.module';
Он не компилирует и он говорит:
...auth/auth.module has no exported member 'LoggedInGuard'
Если я указываю его в нужном месте:
import { LoggedInGuard } from './core/auth/guards/logged-in.guard';
собирает, но показывает следующее сообщение об ошибке во время выполнения:
Unexpected value 'AuthService' exported by the module 'AuthModule'
Что вы предложить мне?
Заранее спасибо.
Хотя вы правы в том, как сделать эту работу, утверждение, что «экспорт не для служб», неверен. Экспорт предназначен для того, чтобы любой класс был доступен для внешнего мира. –
@BoyanKostadinov Вы имеете в виду файл 'export' или' @ NgModule.exports'. Если последнее, я бы хотел увидеть документацию по этому поводу. Если первое, мы на самом деле говорим о последнем здесь: -P '@ NgModule.providers' уже делает его глобальным для внешнего мира, в смысле области приложения –
Я понимаю, что вы сейчас имеете в виду. Вы имели в виду массив «export» в метаданных модуля. Я имел в виду ключевое слово «экспорт». –