我使用html-loader加载我的html模板和文件加载器来加载模板中的图像。这在dev中运行得很好但是当我运行build:prod并运行输出时,我得到一个模板解析错误。
似乎所有angular2内置指令(例如,* ngFor,* ngIf)都被转换为全部小写(例如,* ngfor,* ngif),这会导致错误。
我尝试创建一个单独的项目,这一次,不使用角度2的任何内置指令,一切正常。
我可以使用其他装载机吗?如何正确加载这些模板以及这些模板使用的图像?
这是我的webpack.config
var webpack = require('webpack');
var HtmlWebPackPlugin = require('html-webpack-plugin');
var path = require('path');
module.exports = {
entry:'./src/main.ts',
output:{
path:'./dist',
filename:'app.bundle.js'
},
module:{
loaders:[{test:/\.ts$/, loader:'ts-loader'},
{ test: /\.css$/, loaders: ['to-string-loader', 'css-loader'] },
{ test: /\.html$/, loader: 'html-loader' },
{test: /\.(jpe?g|png|gif|svg)$/i, loader: "file-loader"},
//{ test: /\.html$/, loader: 'raw-loader' },
//{ test: require.resolve('jquery'), loader: 'expose?jQuery!expose?$' }
]
/* loaders: [
// .ts files for TypeScript
{ test: /\.ts$/, loaders: ['awesome-typescript-loader', 'angular2-template-loader'] },
{ test: /\.css$/, loaders: ['to-string-loader', 'css-loader'] },
{ test: /\.html$/, loader: 'raw-loader' }
]*/
},
resolve:{
root: [ path.join(__dirname, 'src') ], //add this for dev server
extensions:['','.js','.ts']
},
plugins:[
//inject all the files above into this file
new HtmlWebPackPlugin({
template: './src/index.html'
}),
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
jquery: 'jquery'
})
]
}
以下是我得到的解析错误。
错误:模板解析错误:无法绑定到&#rou; routerlink'既然如此 不是“a”的已知财产。 (" r>菜单] [routerlink] = r.routerLink [routerlinkactive] =" ['有源']"> {{r.text}} "):t @ 0:359无法绑定到&#rou; routerlinkactive'因为它不是一个 'a'的已知财产。 (""项目ui red" * ngfor ="让r路由">] [routerlinkactive] =" ['有效'] "> {{r.text}}主页 菜单] * ngfor ="设r路由">主菜单[错误 - >]] * ngif = bolWidthLess1000>
[错误 - >] ] [routerlink] = r.routerLink> ] [routerlink] = r.routerLink [routerlinkactive] =" ['有源']"> {{r.text}} ] [routerlinkactive] =" ['有效']"> {{r.text}}"):t @ 0:674无法绑定到 ' ngforOf'因为它不是“a”的已知属性。 (" / DIV>] * ngfor ="让路由" class =" item mainmenu" [routerlink] = r.routerLink> "):t @ 0:540属性绑定ngforOf未被任何指令使用 在嵌入式模板上。确保属性名称拼写 正确且所有指令都列在"指令"部分。 ("> [错误 - >] {{r.text}} ] * ngif = bolWidthLess1000&GT!; "):t @ 0:512属性绑定ngif 嵌入式模板上的任何指令都没有使用。确保 属性名称拼写正确,所有指令都列在 "指令"部分。 (" routerlink] = r.routerLink [routerlinkactive] =" ['有源']"> {{r.text}} [错误 - >]
答案 0 :(得分:8)
在加载程序查询中将minimize param设置为false,如下所示。
{ test: /\.html$/, loader: 'html?minimize=false' }
或强>
您可以将html-loader
升级为0.4.3
并使用以下配置。
{ test: /\.html$/, loader: 'html?minimize=true&caseSensitive: true}