似乎开发使用JIT,而prod使用AOT,这很好。 但是,我正在尝试使用LOT读取LOCALE_ID,该值似乎为空:
@Inject(LOCALE_ID) public localeId: string;
出现空值。
我怀疑我需要在JIT设置中指定语言。 根据这些说明: https://angular.io/guide/i18n#merge-with-the-jit-compiler
但是,如果我执行此设置,以后与使用AOT进行翻译不会冲突吗? -如何在JIT中不使用默认语言环境的情况下访问默认语言环境? -如何在角度6中混合使用JIT和AOT?
答案 0 :(得分:1)
按照您提供的指南进行操作不会破坏AoT编译的i18n设置,但是不需要这样做。我已经尝试过像在一个组件中一样注入令牌,它不是null
,而是en-US
。另外,当我确实在app.module.ts中提供了其他令牌时(例如providers: [ { provide: LOCALE_ID, useValue: 'de' } ],
,如https://angular.io/guide/i18n#merge-with-the-jit-compiler所建议的那样),我注入的令牌变成了de
。
所以要回答How can I access the default locale without it being null in JIT ?
:您必须注入令牌(如您所做的那样),但是不能用app.module.ts中提供的其他值覆盖它。
考虑到这一点,代码中可能存在其他问题,因此,如果您提供堆叠闪电战或其他功能,我们也许可以查明您的问题。