簡體   English   中英

Angular 在運行時設置 base href

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM