4

似乎开发使用JIT,生产使用AOT,这很好。但是我正在尝试使用 JIT 读取似乎为空的 LOCALE_ID:

@Inject(LOCALE_ID) public localeId: string;

出来为空。

我怀疑我需要在 JIT 设置中指定语言。按照这些说明: https ://angular.io/guide/i18n#merge-with-the-jit-compiler

但是,如果我进行此设置,以后使用 AOT 进行翻译不会有冲突吗?- 如何在 JIT 中访问默认语言环境而不使其为空?- 如何在 Angular 6 中混合 JIT 和 AOT?

4

1 回答 1

2

遵循您提供的指南不会破坏 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 中提供的其他值覆盖它。

考虑到这一点,您的代码中的其他地方可能存在问题,因此如果您提供 stackblitz 或其他内容,我们或许可以查明您的问题。

于 2019-05-03T15:05:24.133 回答