我正在尝试提供一个包含我的翻译键及其值示例的对象:
{
"try_again_key": "Try Again",
"cancel_key": "Cancel",
"other_key": "Other"
...
}
我必须将此对象导入我的功能模块中,并将其提供给lib,以便可以使用来自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问题看起来像我所需要的,但是被角度小组https://github.com/angular/angular-cli/issues/9511忽略了
我的问题是,我做错了什么吗?如果是角度AOT的限制,我可以用另一种方式合并2个对象吗?
我尝试过的事情:
使用Object.assign()
而不是传播运算符。
声明一个接收这2个对象的const,然后将其导入我的.forChild()
方法中
export const fallback = { ...tsValues, ...jsonValues};
答案 0 :(得分:0)
如this issue所述,AOT上使用的编译器ngc不会在设计处理元数据时评估对象文字中的散布运算符,即使它评估文字数组中的散布(如{{3 }}有关AOT编译器的信息。
好处是,显然,这个问题已经在ivy(新的Angular编译和渲染管道)上得到解决,为stated on the link you provided。