在Angular

时间:2017-09-20 10:04:54

标签: angular-cli

当我使用[somvar]并输入像{a:value}这样的对象时,我遇到了构建问题。

我输入ng build --prod --aot

错误消息

Invalid ICU message. Missing '}'. ("mTemplate", [ngOutletContext]='{ item: item, dropdown: dropdown, index: i, disable: !selectable[i] }[ERROR ->]')

my.pug

ng-template([ngTemplateOutlet]="itemTemplate", [ngOutletContext]='{ item: item, dropdown: dropdown, index: i, disable: !selectable[i] }')

我没有使用{...:...},而是将[ngOutletContext]修改为[ngOutletContext.item]。它会显示为

ng-template([ngTemplateOutlet]="itemTemplate", [ngOutletContext.item]='item',[ngOutletContext. dropdown]="dropdown",[ngOutletContext.index]="i",[ngOutletContext.disable]="!selectable[i]")

效果不错但设置ngOutletContext太复杂了。处理它是否有任何简单的事情?

加入

tsconfig.aot.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "sourceMap": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es2015",
      "dom"
    ],
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "typeRoots": [
      "./node_modules/@types/"
    ]
  },
  "files": [
    "src/app/ay.module.ts"
  ],
  "angularCompilerOptions": {
    "genDir": "aot",
    "skipMetadataEmit": true
  }
}

1 个答案:

答案 0 :(得分:0)

好的,我在pug找到了我的错。

如果项目只获得template-language无法通过AOT编译的纯解析器。

我们需要做的是翻译成html然后得到AOT编译,无论如何..

webpack之后的风险很大,每次编译时都会pug解析html。希望pug-resolver支持AOT插件,如果aot支持,那么编译也会很慢我们需要rowsPerRead