Angular 6 混合 i18n JIT 和 AOT
Angular 6 Mixing i18n JIT and AOT
好像开发用的是JIT,生产用的是AOT,还好。
但是我正在尝试使用 JIT 读取似乎为 null 的 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?
遵循您提供的指南不会破坏 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 或其他内容,我们或许可以查明您的问题。
好像开发用的是JIT,生产用的是AOT,还好。 但是我正在尝试使用 JIT 读取似乎为 null 的 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?
遵循您提供的指南不会破坏 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 或其他内容,我们或许可以查明您的问题。