【发布时间】:2019-01-29 18:37:50
【问题描述】:
我正在尝试提供一个对象,其中包含我的翻译键及其值示例:
{
"try_again_key": "Try Again",
"cancel_key": "Cancel",
"other_key": "Other"
...
}
我必须在我的功能模块中导入这个对象并将其提供给一个库,以便我可以使用来自 Angular 的翻译,但在我的情况下,我需要像这样合并 2 个对象(都包含不同的翻译键):
import { myFallback } from "../../locale/fallback-ts";
import { otherFallback} from "@company/platform-components";
@NgModule({
imports: [
TranslationsModule.forChild([
{
domain: "domain",
service: "service",
fallback: { ...otherFallback, ...myFallback },
},
]),
当我在 JIT 上记录后备时 = 包含我的 2 个合并对象
当我在 AOT = 空对象上记录回退时
import { myFallback } from "../../locale/fallback-ts";
import { otherFallback} from "@company/platform-components";
@NgModule({
imports: [
TranslationsModule.forChild([
{
domain: "domain",
service: "service",
fallback: myFallback,
},
]),
当我在 JIT/AOT 上记录回退时 = 包含我的对象
但是如果我这样做,它可以工作,但它对我没有帮助,因为我不会合并对象,Angular AOT 似乎不支持传播运算符
我找到了一些关于 AOT 的链接:https://angular.io/guide/aot-compiler 在此链接中,它没有指定我不能与扩展运算符一起使用
这个 github 问题看起来像我需要的,但是 Angular 团队 https://github.com/angular/angular-cli/issues/9511 忽略了它
我的问题是,我做错了吗?如果这是角度 AOT 的限制,我可以用另一种方式合并 2 个对象吗?
我尝试过的事情:
使用Object.assign() 代替扩展运算符。
声明一个接收这 2 个对象的 const,然后在我的 .forChild() 方法中导入它
export const fallback = { ...tsValues, ...jsonValues};
【问题讨论】:
-
aot 编译器的实际错误是什么?它可能不是扩展运算符,但可能是
otherFallback中的某些东西。进行测试,当您执行fallback: otherFallback时它是否正确编译? -
是的,我可以做fallback:otherfallback,其实我忘了说,完全没有错误,唯一的问题是在AOT上我的对象是未定义的,而在JIT中没有。跨度>