Angular2: Core Module

Uso sugerido

Servicios, por ejemplo, autenticación. Por ello, sólo debe existir una instancia.

Un core module debe:

  • Ser cargado en el root module de la app.
  • Ser singleton.
  • Tener definido con providers.

core.module.ts

import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular/core';

@NgModule({
    imports: [],
    declarations: [],
    exports: []
})

export class CoreModule {  
    constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
        if (parentModule) {
            throw new Error("CoreModule exists already. Only import in the root/app");
        }
    }

    static forRoot(): ModuleWithProviders {
        return {
            ngModule: CoreModule,
            providers: []
        }
    }
}

app.module.ts

...
import { CoreModule } from './core/core.module';  
...

@NgModule({
    imports: [
        ...
        CoreModule.forRoot()
        ...
    ],
})
...