某些页面须要放置一些静态图片,按照Angular目录结构,应该放到/src/assets
目录下,例若有文件/src/assets/img/menu_a.svg
,在页面的html模板中这样引用html
<img src="/assets/img/menu_a.svg" alt="">
在本地测试(ng serve -o
)中,在http://localhost:4200
上能够正常显示图片。前端
但前端项目和后台总体打包部署到Tomcat后,发现图片不能正常显示。查看发现图片的连接为http://192.168.0.23:8085/assets/img/menu_a.svg
,而Angular前端被放在路径http://192.168.0.23:8085/fr/
上。图片路径应该是前端构建
http://192.168.0.23:8085/fr/assets/img/menu_a.svg
解决方法:svg
1.前端构建时设置参数 --baseHref
测试
ng build --prod --outputHashing=all --outputPath=../public/dist --baseHref=/fr/ --build-optimizer
--baseHref会使ng建立index.html的时候,添加上base标签ui
<base href="/fr/">
由于Angular是单页模式,因此全部页面和组件都放置在index.html内,使用相同的基础路径。url
2.把assets目录下的文件的url改成./assets
,如code
<img src="./assets/img/menu_a.svg" alt="">
这样就能够正确显示图片。htm
发布于 13:10图片