Skip to content
Snippets Groups Projects
core.module.ts 1.32 KiB
Newer Older
Art Lowel's avatar
Art Lowel committed
import { NgModule, Optional, SkipSelf, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from "../shared/shared.module";
import { isNotEmpty } from "../shared/empty.util";
import { FooterComponent } from "./footer/footer.component";
import { DSpaceRESTv2Service } from "./dspace-rest-v2/dspace-rest-v2.service";
import { CacheService } from "./data-services/cache/cache.service";
Art Lowel's avatar
Art Lowel committed
import { CollectionDataService } from "./data-services/collection-data.service";
import { ItemDataService } from "./data-services/item-data.service";
Art Lowel's avatar
Art Lowel committed

const IMPORTS = [
  CommonModule,
  SharedModule
Art Lowel's avatar
Art Lowel committed
];

const DECLARATIONS = [
  FooterComponent
Art Lowel's avatar
Art Lowel committed
];

const EXPORTS = [
  FooterComponent
Art Lowel's avatar
Art Lowel committed
];

const PROVIDERS = [
Art Lowel's avatar
Art Lowel committed
  ItemDataService,
  DSpaceRESTv2Service,
  CacheService
Art Lowel's avatar
Art Lowel committed
];

@NgModule({
  imports: [ ...IMPORTS ],
  declarations: [...DECLARATIONS],
  exports: [...EXPORTS],
  providers: [...PROVIDERS]
})
export class CoreModule {
  constructor (@Optional() @SkipSelf() parentModule: CoreModule) {
    if (isNotEmpty(parentModule)) {
      throw new Error(
        'CoreModule is already loaded. Import it in the AppModule only');
    }
  }

  static forRoot(): ModuleWithProviders {
    return {
      ngModule: CoreModule,
Art Lowel's avatar
Art Lowel committed
      providers: [
        ...PROVIDERS
      ]
    };
  }
}