Configuration utility for Angular
Adding
Add
The following examples show the use of an exported function (instead of an inline function) for AoT compilation. Setting up
Setting up
If you provide application settings using a
You can find detailed information about the usage guidelines for the Setting up
You can find detailed information about the usage guidelines for the
When the
To specify returning value type you can add generic type in
The following example shows how to read configuration settings using all available overloads of
In order to use this pipe in lazy-loaded modules, you must import
Copyright (c) 2019 Burak Tasci
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.Table of contents:
- Installation - Examples - Related packages - Recommended packages - Adding@ngx-config/core
to your project (SystemJS)
- app.module configuration- Settings - Setting up
ConfigModule
to useConfigStaticLoader
- Setting upConfigModule
to useConfigHttpLoader
- Setting upConfigModule
to useConfigMergeLoader
- Usage
- Pipe
- License
Getting started
Installation
You can install@ngx-config/core
using npm
npm install @ngx-config/core --save
Examples
- ng-seed/universal and fulls1z3/example-app are officially maintained projects, showcasing common patterns and best
@ngx-config/core
.Related packages
The following packages may be used in conjunction with@ngx-config/core
:Recommended packages
The following package(s) have no dependency for@ngx-config/core
, however may provide supplementary/shorthand functionality: 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
ImportConfigModule
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 usingConfigStaticLoader
. 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/core
will 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 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
.To specify returning value type you can add generic type in
getSettings
.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'
const url = this.config.getSettings<string>('system.applicationUrl');
}
myMethodToGetUrl1b() {
// will retrieve 'http://localhost:8000'
const url = this.config.getSettings<string>(['system', 'applicationUrl']);
}
myMethodToGetUrl2a() {
// will retrieve 'http://localhost:8000'
const url = this.config.getSettings<string>('system').applicationUrl;
}
myMethodToGetUrl2b() {
// will retrieve 'http://localhost:8000'
const url = this.config.getSettings<string>().system.applicationUrl;
}
myMethodToGetUrl3a() {
// will throw an exception (system.non_existing is not in the application settings)
const url = this.config.getSettings<string>('system.non_existing');
}
myMethodToGetUrl3b() {
// will retrieve 'no data' (system.non_existing is not in the application settings)
const url = this.config.getSettings<string>('system.non_existing', 'no data');
}
myMethodToGetSeo1() {
// will retrieve {"pageTitle":"Tweeting bird"}
const seoSettings = this.config.getSettings<string>('seo');
}
myMethodToGetSeo1() {
// will retrieve {"pageTitle":"Tweeting bird"}
const seoSettings = this.config.getSettings<string>().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>
In order to use this pipe in lazy-loaded modules, you must import
ConfigModule.forChild()
.License
The MIT License (MIT)Copyright (c) 2019 Burak Tasci