2

在下面的示例中,静态加载的语言环境信息

import { NgModule, LOCALE_ID } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';

import { load } from '@telerik/kendo-intl';
load(
  require(`json!cldr-data/main/bg/numbers.json`),
  require(`json!cldr-data/main/bg/currencies.json`),
  require(`json!cldr-data/main/bg/ca-gregorian.json`),
  require(`json!cldr-data/main/bg/timeZoneNames.json`)
);

@NgModule({
    bootstrap:    [AppComponent],
    declarations: [AppComponent],
    imports:      [BrowserModule],
    providers:    [{ provide: LOCALE_ID, useValue: 'bg-BG' }]
})
export class AppModule {
}

我知道如何动态加载 cldr 数据。但这需要注入CldrIntlService“静态” 。locale由于用户可以随时locale在我的应用程序中更改,我希望在获取新的 CLDR 数据后使用新的CldrIntlService服务更新服务。locale如何做到这一点?

4

1 回答 1

1

CldrIntlService不需要静态语言环境,但 Angular 需要它。你可以在这里读更多关于它的内容:

https://angular.io/docs/ts/latest/cookbook/i18n.html

至于问题 - 在当前阶段,Angular 建议使用路由器来处理不同的本地化场景。因此,在您的情况下,您可以使用路由器注入不同的服务实例并导航到该页面。

于 2016-11-15T15:07:29.477 回答