使用提供程序检测语言环境并在 angular 2 根模块上设置它

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

我有一个检测当前语言环境的功能,我需要通过提供商在 angular 2 root App 模块中设置语言环境。这样我就可以在所有其他组件中使用它。

我知道我可以像下面那样做。

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

但如果可能的话,我想做下面这样的事情。

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

否则请提出任何合适的方法来实现这一目标。谢谢

拥有一个 AppConfig 提供程序来存储配置和其他常量值可能对您的应用有用。

import { Injectable } from "@angular/core"

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

   constructor(){
       this.endpointUrl = "";
       this.local = ""; // use detect local logic here
   }
}

并提供您配置的单例实例 class:

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

通过这种方式,您可以将所有设置和配置放在一个地方。

此外,我现在不能将 strings 用作提供商令牌。提供商令牌只能是 class 类型。