dependencies Legend  Declarations  Module  Bootstrap  Providers  Exports cluster_NgxPfeModule cluster_NgxPfeModule_imports NgxPfeUtilModule NgxPfeUtilModule NgxPfeModule NgxPfeModule NgxPfeUtilModule->NgxPfeModule PfeActionsModule PfeActionsModule PfeActionsModule->NgxPfeModule PfeConditionsModule PfeConditionsModule PfeConditionsModule->NgxPfeModule PfeServiceActivatorModule PfeServiceActivatorModule PfeServiceActivatorModule->NgxPfeModule PfeTranslateModule PfeTranslateModule PfeTranslateModule->NgxPfeModule

File

libs/ngx-pfe/ngx-pfe.module.ts

Methods

Static forRoot
forRoot(ngxPfeModuleConfigurationProvider: Provider)
Parameters :
Name Type Optional Description
ngxPfeModuleConfigurationProvider Provider No

Provider, that provides the NGX_PFE_CONFIGURATION injection token.

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],
    };
  }
}

results matching ""

    No results matching ""