[解決済み] Angular 2+ - ベースのhrefを動的に設定する
2022-04-25 11:33:04
質問
クライアントにAngular 2を使用した企業向けアプリがあります。顧客はそれぞれ独自のURLを持っており、例.
https://our.app.com/customer-one
と
https://our.app.com/customer-two
. 現在、私たちは
<base href...>
を使用して動的に
document.location
. そのため、ユーザーは
https://our.app.com/customer-two
と
<base href...>
に設定されます。
/customer-two
...完璧だ!
問題は、ユーザーが例えば次の場所にいる場合です。
https://our.app.com/customer-two/another-page
で、ページを更新するか、そのURLを直接叩こうとすると
<base href...>
に設定されます。
/customer-two/another-page
となり、リソースが見つからなくなります。
以下を試しましたが、効果がありません。
<!doctype html>
<html>
<head>
<script type='text/javascript'>
var base = document.location.pathname.split('/')[1];
document.write('<base href="/' + base + '" />');
</script>
...
残念ながらアイディアが尽きたばかりです。何かお手伝いいただけると助かります。
解決方法は?
結局どうしたかというと、こんな感じです。
これをindex.htmlに追加します。の中で一番最初にあるはずです。
<head>
セクション
<base href="/">
<script>
(function() {
window['_app_base'] = '/' + window.location.pathname.split('/')[1];
})();
</script>
そして、その中の
app.module.ts
ファイルに
{ provide: APP_BASE_HREF, useValue: window['_app_base'] || '/' }
をプロバイダのリストに追加して、次のようにします。
import { NgModule, enableProdMode, provide } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { APP_BASE_HREF, Location } from '@angular/common';
import { AppComponent, routing, appRoutingProviders, environment } from './';
if (environment.production) {
enableProdMode();
}
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
HttpModule,
routing],
bootstrap: [AppComponent],
providers: [
appRoutingProviders,
{ provide: APP_BASE_HREF, useValue: window['_app_base'] || '/' },
]
})
export class AppModule { }
関連
-
[解決済み] Angular 2 ルーターベースなし href = "/stock/stock_detail.html?
-
[解決済み] Angular HTMLバインディング
-
[解決済み] Angular:*ngClassを使った条件付きクラス
-
[解決済み] Angular/RxJS `Subscription` からいつ退会すればいいのか?
-
[解決済み] モジュール "@angular-devkit/build-angular" が見つかりませんでした。
-
[解決済み] Angularアプリを本番用にバンドルする方法
-
[解決済み] Angular HTTP GET with TypeScript エラー http.get(...).map is not a function in [null].
-
[解決済み] angular2 tslintの警告を止めるためにコンポーネントのデフォルトプレフィックスを変更する方法
-
[解決済み] AngularでngFor repeatをある数のアイテムに制限するにはどうすればよいですか?
-
[解決済み] Angularのルーターリンクが対応するコンポーネントにナビゲートされない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Angularインタビュー質問まとめ1~基礎知識(Angular v8+)編
-
Angularが報告するインジェクションエラーとその解決方法...$injector:unpr]。
-
[解決済み] Angular [disabled]="MyBoolean "が動作しない。
-
[解決済み】エラー NG6002: AppModule の NgModule.imports に表示されるが、NgModule クラスに解決できなかった。
-
[解決済み】take(1) vs first()
-
[解決済み] AngularのINPUT要素でngModel内のパイプを使用する
-
[解決済み] Angular - "has no exported member 'Observable'" エクスポートされたメンバーがありません。
-
[解決済み] エクスポートされた2つのクラスを同じ名前でインポートする
-
[解決済み] Angular2の変更検出:ネストされたオブジェクトに対してngOnChangesが発生しない
-
[解決済み] Angular 2+ - ベースのhrefを動的に設定する