Config State Service

ConfigStateService is a singleton service, i.e. provided in root level of your application, and keeps the application configuration response in the internal store.

Before Use

In order to use the ConfigStateService you must inject it in your class as a dependency.

import { ConfigStateService } from '@abp/ng.core';

@Component({
  /* class metadata here */
})
class DemoComponent {
  constructor(private config: ConfigStateService) {}
}
JavaScript

You do not have to provide the ConfigStateService at module or component/directive level, because it is already provided in root.

Get Methods

ConfigStateService has numerous get methods which allow you to get a specific configuration or all configurations.

Get methods with "$" at the end of the method name (e.g. getAll$) return an RxJs stream. The streams are triggered when set or patched the state.

How to Get All Configurations

You can use the getAll or getAll$ method of ConfigStateService to get all of the applcation configuration response object. It is used as follows:

// this.config is instance of ConfigStateService

const config = this.config.getAll();

// or
this.config.getAll$().subscribe(config => {
   // use config here
})
JavaScript

How to Get a Specific Configuration

You can use the getOne or getOne$ method of ConfigStateService to get a specific configuration property. For that, the property name should be passed to the method as parameter.

// this.config is instance of ConfigStateService

const currentUser = this.config.getOne("currentUser");

// or
this.config.getOne$("currentUser").subscribe(currentUser => {
   // use currentUser here
})
JavaScript

On occasion, you will probably want to be more specific than getting just the current user. For example, here is how you can get the tenantId:

const tenantId = this.config.getDeep("currentUser.tenantId");

// or
this.config.getDeep$("currentUser.tenantId").subscribe(tenantId => {
   // use tenantId here
})
JavaScript

or by giving an array of keys as parameter:

const tenantId = this.config.getDeep(["currentUser", "tenantId"]);
JavaScript

FYI, getDeep is able to do everything getOne does. Just keep in mind that getOne is slightly faster.

How to Get a Feature

You can use the getFeature or getFeature$ method of ConfigStateService to get a feature value. For that, the feature name should be passed to the method as parameter.

// this.config is instance of ConfigStateService

const enableLdapLogin = this.config.getFeature("Account.EnableLdapLogin");

// or
this.config.getFeature$("Account.EnableLdapLogin").subscribe(enableLdapLogin => {
   // use enableLdapLogin here
})
JavaScript

For more information, see the features document.

How to Get a Setting

You can use the getSetting or getSetting$ method of ConfigStateService to get a setting. For that, the setting name should be passed to the method as parameter.

// this.config is instance of ConfigStateService

const twoFactorBehaviour = this.config.getSetting("Abp.Identity.TwoFactor.Behaviour");

// or
this.config.getSetting$("Abp.Identity.TwoFactor.Behaviour").subscribe(twoFactorBehaviour => {
   // use twoFactorBehaviour here
})
JavaScript

For more information, see the settings document.

State Properties

Please refer to ApplicationConfigurationDto type for all the properties you can get with getOne and getDeep. It can be found in the models.ts file.

Set State

ConfigStateService has a method named setState which allow you to set the state value.

You can get the application configuration response and set the ConfigStateService state value as shown below:

import {AbpApplicationConfigurationService, ConfigStateService} from '@abp/ng.core';

constructor(private abpApplicationConfigurationService: AbpApplicationConfigurationService, private config: ConfigStateService) {
  this.abpApplicationConfigurationService.get({ includeLocalizationResources: false }).subscribe(config => {
    this.config.setState(config);
  })
}
JavaScript

See Also

Contributors


Last updated: July 31, 2024 Edit this page on GitHub

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

Community Talks

Real World Problems and Solutions with AI

27 Feb, 17:00
Online
Watch the Event
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
Do you need assistance from an ABP expert?
Schedule a Meeting
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book