@nccvn/ngx-config v1.0.2
@ngx-config/core

Configuration utility for Angular
Please support this project by simply putting a Github star. Share this library with friends on Twitter and everywhere else you can.
@ngx-config/core uses APP_INITIALIZER which executes a function when Angular app is initialized, and delay the
completion of initialization process until application settings have been provided.
NOTICE
This 4.x.x branch is intented to work with
@angular v4.x.x. If you're developing on a later release of Angular thanv4.x.x, then you should probably choose the appropriate version of this library by visiting the master branch.
Table of contents:
- Prerequisites
- Getting started
- Settings
- Setting up
ConfigModuleto useConfigStaticLoader- Setting upConfigModuleto useConfigHttpLoader- Setting upConfigModuleto useConfigFsLoader- Setting upConfigModuleto useUniversalConfigLoader- Setting upConfigModuleto useConfigMergeLoader - Usage
- Pipe
- License
Prerequisites
This library depends on Angular v4.0.0. Older versions contain outdated dependencies, might produce errors.
Also, please ensure that you are using Typescript v2.3.4 or higher.
Getting started
Installation
You can install @ngx-config/core using npm
npm install @ngx-config/core --saveExamples
- ng-seed/universal and fulls1z3/example-app are officially maintained projects, showcasing common patterns and best
practices for
@ngx-config/core.
Related packages
The following packages may be used in conjunction with @ngx-config/core:
- @ngx-config/http-loader
- @ngx-config/fs-loader
- @ngx-universal/config-loader
- @ngx-config/merge-loader
- @ngx-i18n-router/config-loader
Recommended packages
The following package(s) have no dependency for @ngx-config/core, however may provide supplementary/shorthand functionality:
- @ngx-cache/core: provides caching features to retrieve the application settings using
non-static loaders(http,fs, etc.)
Adding @ngx-config/core to your project (SystemJS)
Add map for @ngx-config/core in your systemjs.config
'@ngx-config/core': 'node_modules/@ngx-config/core/bundles/core.umd.min.js'app.module configuration
Import ConfigModule using the mapping '@ngx-config/core' and append ConfigModule.forRoot({...}) within the imports
property of app.module (considering the app.module is the core module in Angular application).
Settings
You can call the forRoot static method using ConfigStaticLoader. By default, it is configured to have no settings.
You can customize this behavior (and ofc other settings) by supplying application settings to
ConfigStaticLoader.
The following examples show the use of an exported function (instead of an inline function) for AoT compilation.
Setting up ConfigModule to use ConfigStaticLoader
...
import { ConfigModule, ConfigLoader, ConfigStaticLoader } from '@ngx-config/core';
...
export function configFactory(): ConfigLoader {
return new ConfigStaticLoader({
"system": {
"applicationName": "Mighty Mouse",
"applicationUrl": "http://localhost:8000"
},
"seo": {
"pageTitle": "Tweeting bird"
},
"i18n":{
"locale": "en"
}
});
}
@NgModule({
declarations: [
AppComponent,
...
],
...
imports: [
ConfigModule.forRoot({
provide: ConfigLoader,
useFactory: (configFactory)
}),
...
],
...
bootstrap: [AppComponent]
})ConfigStaticLoader has one parameter:
- providedSettings:
any: application settings
:+1: Cool!
@ngx-config/corewill retrieve application settings before Angular initializes the app.
Setting up ConfigModule to use ConfigHttpLoader
If you provide application settings using a JSON file or an API, you can call the forRoot static method using the
ConfigHttpLoader. By default, it is configured to retrieve application settings from the endpoint /config.json
(if not specified).
You can customize this behavior (and ofc other settings) by supplying a api endpoint to
ConfigHttpLoader.
You can find detailed information about the usage guidelines for the ConfigHttpLoader here.
Setting up ConfigModule to use ConfigFsLoader
If you provide application settings using a JSON file (on the server platform), you can call the forRoot static
method using the ConfigFsLoader. By default, it is configured to retrieve application settings from the path /config.json
(if not specified).
You can customize this behavior (and ofc other settings) by supplying a file path to
ConfigFsLoader.
You can find detailed information about the usage guidelines for the ConfigFsLoader here.
Setting up ConfigModule to use UniversalConfigLoader
UniversalConfigLoader provides application settings to browser/server platforms.
You can find detailed information about the usage guidelines for the UniversalConfigLoader here.
Setting up ConfigModule to use ConfigMergeLoader
ConfigMergeLoader provides application settings by executing loaders in parallel and in series.
You can find detailed information about the usage guidelines for the ConfigMergeLoader here.
Usage
ConfigService has the getSettings method, which you can fetch settings loaded during application initialization.
When the getSettings method is invoked without parameters, it returns entire application configuration. However, the getSettings
method can be invoked using two optional parameters: key and defaultValue.
The following example shows how to read configuration settings using all available overloads of getSettings method.
anyclass.ts
...
import { ConfigService } from '@ngx-config/core';
@Injectable()
export class AnyClass {
constructor(private readonly config: ConfigService) {
// note that ConfigService is injected into a private property of AnyClass
}
myMethodToGetUrl1a() {
// will retrieve 'http://localhost:8000'
let url:string = this.config.getSettings('system.applicationUrl');
}
myMethodToGetUrl1b() {
// will retrieve 'http://localhost:8000'
let url:string = this.config.getSettings(['system', 'applicationUrl']);
}
myMethodToGetUrl2a() {
// will retrieve 'http://localhost:8000'
let url:string = this.config.getSettings('system').applicationUrl;
}
myMethodToGetUrl2b() {
// will retrieve 'http://localhost:8000'
let url:string = this.config.getSettings().system.applicationUrl;
}
myMethodToGetUrl3a() {
// will throw an exception (system.non_existing is not in the application settings)
let url:string = this.config.getSettings('system.non_existing');
}
myMethodToGetUrl3b() {
// will retrieve 'no data' (system.non_existing is not in the application settings)
let url:string = this.config.getSettings('system.non_existing', 'no data');
}
myMethodToGetSeo1() {
// will retrieve {"pageTitle":"Tweeting bird"}
let seoSettings: string = this.config.getSettings('seo');
}
myMethodToGetSeo1() {
// will retrieve {"pageTitle":"Tweeting bird"}
let seoSettings: string = this.config.getSettings().seo;
}
}Pipe
ConfigPipe is used to get the application settings on the view level. Pipe can be appended to a string or to an
Array.
<span id="property">{{'some.setting' | config}}</span>
<span id="property">{{['some', 'setting'] | config}}</span>License
The MIT License (MIT)
Copyright (c) 2017 Burak Tasci