私は組み込みWebサイトの一部となる単一ページのAngular 2.2.0アプリケーションを構築しています。このサイトには半ページ12のページがあり、Angular SPAは/application.html
になります。アプリケーションはさまざまな時間にさまざまなコンポーネントを表示/非表示にします。これはルータを使用して運転しています。Angular2ルータの手をブラウザのアドレスバーから離しておく
ユーザーがSPA内の場所をブックマークできるようにする必要がないため、/application.html
のURLを維持したい場合、Webサーバーは「見つからない」URLを別の場所にマップするように構成できません。それはSPAを他のウェブサイトとより良く共存させるでしょう。残念ながら、これは角度ルータがどのように設計されているかではありません。それは、reeeeallyブラウザのアドレスバーで遊びたいです。
私はこれの2つの結果を取り組んだ。具体的には、コードが新しい場所にジャンプしたときにskipLocationChange
プロパティを使用しています。テンプレートに<a routerLink=...
ツールを使用してリンクを作成していません。しかし、私が取り組まなかった3番目の問題があります。開始時にアドレスバーをクリアする角度。
Angularのルーターは、アドレスバーの初期値がホストページに指定されているbase
の値と等しい必要があるようです。通常の<base href="/">
の場合、アドレスバーは最初にexample.com/
に設定されます。代わりに<base href="/application.html">
を使用すると、アドレスバーはexample.com/application.html/
に初期化されます(末尾は/
、シガーは閉じていません)。これはすべて非常にイライラです。ルータにアドレスバーの制御権を必要とする理由はありません。
Angular 2ルータがブラウザのアドレスバーを邪魔しないようにする方法はありますか?または、私がルータを使用しない場合、さまざまなコンポーネントが表示され消えるかどうかをプログラム状態で判断する方法はありますか? (後者は実際にはすべての可能な世界の中で最高です;ルータシステムはかなり制限されています)。
ルータmoduを作成するときに、useHashのextraオプションをtrueに設定します。https://angular.io/docs/ts/latest/api/router/index/RouterModule-class.html –
@JBNizetありがとう;それはクリーンなものですが、アドレスバーにはまだschmutzがあります。 –
ルータのポイントは、URLをコンポーネントにマップし、URLをナビゲートすることです。 –