当我使用[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
}
}
答案 0 :(得分:0)
好的,我在pug
找到了我的错。
如果项目只获得template-language
无法通过AOT编译的纯解析器。
我们需要做的是翻译成html然后得到AOT
编译,无论如何..
webpack之后的风险很大,每次编译时都会pug
解析html
。希望pug-resolver
支持AOT
插件,如果aot
支持,那么编译也会很慢我们需要rowsPerRead
。