chenk chenk - 7 months ago 53
AngularJS Question

Detect locale and set it on angular 2 root module using provider

I have a function to detect current locale and I need to set the locale at angular 2 rooot App module via provider. so that i can use that in all other components.

I know i can able to do this like below.

{ provide: 'Locale', useValue: 'en-US' }

But i want to do something like this below if possible.

{ provide: 'Locale', useValue: this.detectLocale() }

Otherwise Please suggest any suitable way to achieve this. Thanks.


Having an AppConfig provider that will store configuration and other constant values may be useful in your app.

import { Injectable } from "@angular/core"

export class AppConfig()
   public endPointUrl: string; // sample configuration value
   public local: string;

       this.endpointUrl = "";
       this.local = ""; // use detect local logic here

and provide a singleton instanse of your configuration class:

{provide: AppConfig, useValue: new AppConfig()}

In this way you can put all your settings and configurations in one place.

Also as I now you can't use strings as provider token. Provider tokens only can be class types.