传播运算符以在导入时合并对象-AOT

时间:2019-01-29 18:37:50

标签: angular aot

我正在尝试提供一个包含我的翻译键及其值示例的对象:

{ 
  "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};

1 个答案:

答案 0 :(得分:0)

this issue所述,AOT上使用的编译器ngc不会在设计处理元数据时评估对象文字中的散布运算符,即使它评估文字数组中的散布(如{{3 }}有关AOT编译器的信息。

好处是,显然,这个问题已经在ivy(新的Angular编译和渲染管道)上得到解决,为stated on the link you provided