@mjamsek/ngx-config
TypeScript icon, indicating that this package has built-in type declarations

0.0.1 • Public • Published

@mjamsek/ngx-config

Build Status

Library for runtime configuration of Angular applications

Introduction

Documentation

Installation

To install library simply execute command:

npm install --save @mjamsek/ngx-config

Usage

Initialization

Library's initialization method must be called at application startup, preferably, before any other code.

Two recommended ways:

  • Register Angular application initializer (recommended - the Angular way)
  • In main.ts file to wrap around Angular's bootstrap function
Application initializer

First, we will need to write factory function, which will call initialization method. For this we can create new file called factories.ts and put this code in it:

import {ConfigService} from "@mjamsek/ngx-config";
import {environment} from "../environments/environment";

export function AppConfigFactory() {
    return async () => {
        await ConfigService.initialize("/config/config.json", environment);
    };
}

Next we need to let Angular know, to use this factory when initializing application. We can do this in app.module.ts:

import {APP_INITIALIZER, NgModule} from "@angular/core";
import {AppConfigFactory} from "./factories";

@NgModule({
    declarations: [],
    imports: [],
    providers: [
        {provide: APP_INITIALIZER, useFactory: AppConfigFactory, multi: true}
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }
Wrapping method

In file main.ts, bootstrap Angular method with own:

import { enableProdMode } from "@angular/core";
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import { AppModule } from "./app/app.module";
import { environment } from "./environments/environment";
import { ConfigService } from "@mjamsek/ngx-config";

if (environment.production) {
    enableProdMode();
}
ConfigService.initialize({path: "/config/config.json", environment: environment}).then(() => {
    platformBrowserDynamic().bootstrapModule(AppModule)
        .catch(err => console.error(err));
});

Dependents (0)

Package Sidebar

Install

npm i @mjamsek/ngx-config

Weekly Downloads

0

Version

0.0.1

License

none

Unpacked Size

133 kB

Total Files

27

Last publish

Collaborators

  • mjamsek