[英]Angular set base href at runtime
我的 Angular 7 應用程序部署在一組服務器上,並且部署在多台服務器上:
http://server1:8081/my-app
http://server2:8081/my-app
此外,它還可以在將請求轉發到可用子服務器的負載均衡器中使用:
https://my-balancer.com/apps/my-app
我正在使用 PathLocationStrategy 並且我想讓它適用於所有 URL。
我遇到的問題是 base 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 似乎忽略了它。
有任何想法嗎? 謝謝!
由於<base>
標記是在index.html
文件中設置的,在我們的AppComponent
之外,我認為 Angular 不會提供特定的服務來實現這一點。 所以,剩下的唯一選擇是在AppComponent
手動AppComponent
ngOnInit() {
const base = document.head.querySelector('base');
base.href = 'whatever you want';
}
這應該為您完成工作。
嘗試在運行時修改dist/index.html
文件,向您的服務器實例添加一個 bash 腳本,如下所示:
#/bin/bash
sed -i 's/base href="\/my-app\/"/base href="'$1'"/' index.html
將新的href值作為參數傳遞給腳本。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.