我的Angular 7应用程序部署在服务器群集中,并且部署在多个服务器上:
http://server1:8081/my-app
http://server2:8081/my-app
此外,它还可以在负载均衡器中将请求转发到可用的子服务器:
https://my-balancer.com/apps/my-app
我正在使用PathLocationStrategy,我想使其适用于所有URL。
我遇到的问题是基本href属性,因为它的值应该在运行时设置:
http://server1:8081/my-app <-- base_href should be /my-app/
https://my-balancer.com/apps/my-app <-- base_href should be /apps/my-app/
是否可以在运行时设置base_href属性,例如从location.href构建其值?
我尝试将APP_BASE_HREF提供程序添加到AppModule中,但是angular似乎忽略了它。
有什么想法吗?谢谢!
答案 0 :(得分:0)
由于<base>
标签是在index.html
之外的AppComponent
文件中设置的,我认为Angular不会提供特定的服务来实现这一目标。因此,剩下的唯一选择是在AppComponent
ngOnInit() {
const base = document.head.querySelector('base');
base.href = 'whatever you want';
}
这应该为您完成工作。
答案 1 :(得分:0)
尝试在运行时通过向服务器实例中添加bash脚本来修改dist/index.html
文件,如下所示:
#/bin/bash
sed -i 's/base href="\/my-app\/"/base href="'$1'"/' index.html
将新的 href 值作为参数传递给脚本。
希望有帮助。