libs/ngx-pfe/ngx-pfe.module.ts
Static forRoot | ||||||||
forRoot(ngxPfeModuleConfigurationProvider: Provider)
|
||||||||
Defined in libs/ngx-pfe/ngx-pfe.module.ts:66
|
||||||||
Parameters :
Returns :
ModuleWithProviders<NgxPfeModule>
|
import { CommonModule } from '@angular/common';
import { ModuleWithProviders, NgModule, Optional, Provider, SkipSelf } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { PfeTranslateModule } from './i18n/pfe-translate.module';
import { PfeActionsModule } from './pfe-actions/pfe-actions.module';
import { PfeConditionsModule } from './pfe-conditions/conditions.module';
import { PfeServiceActivatorModule } from './pfe-service-activator/pfe-service-activator.module';
import { NgxPfeUtilModule } from './pfe-util/pfe-util.module';
import { PfeBusinessService } from './services/pfe-business-service/business.service';
import { PfeConfigurationService } from './services/pfe-config-service/config-service.service';
import { PfeModuleConfigurationService } from './services/pfe-module-configuration/pfe-module-configuration.service';
import { PfeNavigationUtilService } from './services/pfe-navigation-service/navigation-util.service';
import { PfeNavigationService } from './services/pfe-navigation-service/navigation.service';
import { PfePageMappingService } from './services/pfe-page-mapping-service/page-mapping-service.service';
import { PfeRestService } from './services/pfe-rest-service/rest.service';
import { PFEPageRoutingEventsHandlerService } from './services/pfe-routing/page-routing-events-handler.service';
import { PfeRouteGuardsService } from './services/pfe-routing/route-generator-guards.service';
import { PFERouteGeneratorService } from './services/pfe-routing/route-generator.service';
import { PfeStateService } from './services/pfe-state-service/state.service';
// TODO: Create wrapper module/component that encapsulates everything (routing/template):
const defaultProviders: Provider[] = [
PFERouteGeneratorService,
PfeRouteGuardsService,
PFEPageRoutingEventsHandlerService,
PfeBusinessService,
PfeNavigationService,
PfeStateService,
PfePageMappingService,
PfeRestService,
[{ provide: PfeConfigurationService, useClass: PfeConfigurationService }],
PfeNavigationUtilService,
PfeModuleConfigurationService,
];
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
NgxPfeUtilModule,
PfeServiceActivatorModule,
PfeActionsModule,
PfeConditionsModule,
PfeTranslateModule,
],
})
export class NgxPfeModule {
/**
* A dependency to itself is used here to protect against accidental duplicate imports of the NgxPfeModule.
*
* Due to the Injector hierarchy in Angular, it is still possible to use multiple journey instances in the same app.
*
* Inspiration: https://angular.io/guide/singleton-services#prevent-reimport-of-the-greetingmodule
*/
constructor(@Optional() @SkipSelf() parentModule?: NgxPfeModule) {
if (parentModule) {
throw new Error('NgxPfeModule is already loaded. Please ensure to only import it once per journey');
}
}
/**
* @param ngxPfeModuleConfigurationProvider Provider, that provides the NGX_PFE_CONFIGURATION injection token.
*/
static forRoot(ngxPfeModuleConfigurationProvider: Provider): ModuleWithProviders<NgxPfeModule> {
return {
ngModule: NgxPfeModule,
providers: [...defaultProviders, ngxPfeModuleConfigurationProvider],
};
}
}