能否仅让Angular的baseHref作用于资源,不影响路由与Http请求?
解决方案
baseHref会同时作用于路由和资源请求,要实现资源走指定前缀、路由保持根路径的效果,可以用Angular的deployUrl配置和baseHref分开设置:
方法1:通过构建命令参数设置
直接在构建时分别指定路由基准和资源加载路径:
ng build --base-href / --deploy-url /assets/app/dist/
--base-href /:让路由保持根路径,不会带上assets/app/dist前缀,你的路由依然是http://localhost:9000/#/home--deploy-url /assets/app/dist/:指定所有静态资源(JS、CSS、图片等)的加载前缀,解决资源404问题
方法2:在angular.json中配置
如果想把配置固化到项目文件里,打开angular.json,找到对应项目的architect.build.options节点,添加以下配置:
"baseHref": "/", "deployUrl": "/assets/app/dist/"
这样每次构建都会自动应用这两个配置,效果和命令行参数一致。
注意:你的路由已经启用了useHash: true,这个方案完全兼容,hash模式下路由的基准路径不会影响#后面的路由部分,只会确保资源请求走指定前缀。
内容的提问来源于stack exchange,提问作者garethdn
相关产品推荐
相关产品推荐

