我正在尝试使用documentation方法在我的角度应用程序引导之前设置LOCALE_ID令牌:

import { LOCALE_ID } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';

platformBrowserDynamic().bootstrapModule(AppModule, {
  providers: [{provide: LOCALE_ID, useValue: 'fr-FR' }]
});


在我的AppModule构造函数中检查令牌时,似乎已将其重置为默认值

export class AppModule {
    constructor(@Inject(LOCALE_ID) private locale: string) {
        console.log('Locale - App module', this.locale);
    }
}


输出:Locale - App module en-US

我在这里想念什么?

这是Stackblitz重现该问题的方法:
https://stackblitz.com/edit/angular-2rdtb6

最佳答案

您应该将提供程序传递给平台注入器,而不传递给编译器注入器:

platformBrowserDynamic([ {provide: LOCALE_ID, useValue: 'fr-FR' }])
                                          \/
                                    extraProviders
  .bootstrapModule(AppModule);


注意,要在stackblitz中对其进行测试,您必须重新加载应用程序,因为Angular仅创建一次平台。

也可以看看:


What you always wanted to know about Angular Dependency Injection tree

10-06 15:04