2017-08-09 10 views
0

が、私は以下のように私のルートを定義している取得するハッシュ化それは私のルートの404エラーを投げ始めた。ハッシュされたURLで動作します。Angular2は、URLが現在のURL

は、しかし、私のコードで私はそれが基本路線だった場合は、trueた状態でのdivを見せていた条件を持っていた:

if(this.router.url == '/'){ 
    this.showHomeContent=true; 
} 

当時ハッシュなしの私のURLが「、「/」でした/プロフィール 'などとそれは正しく動作するために使用されます。今は '#'、 '#/ profile'などですが、この条件は動作しなくなり、特定のdivは常に開いたままになります。

どうすればこの問題を解決できますか?

+0

ハッシュワークを追加するだけですか? '==#/' – DeborahK

答えて

1

ナビゲーションには角度ルータを使用する必要があります。私はhrefの代わりに[routerLink]を意味します。あなたが知らないリソースにアクセスしようとしているURLを入力すると、404が表示されない場合があります。既定では、AngularはPathLocationStrategyを使用します。これにより、この状況でサーバーが要求されます。

ルータのナビゲーションを使用する場合は、index.htmlへのリダイレクトを設定することでこの問題を解決できます。ルータは正しくナビゲートします。

ので、適切にルータを使用して起動し、アプリのモジュールでこれを追加します。

providers:[{provide: LocationStrategy, useClass: HashLocationStrategy}] 

ルータがURLへ#の-signを追加していく予定と結果としてサーバー側の要求を行うことはありませんもう一度、あなたのhrefをrouterLinkディレクティブで置き換えてください。

+0

私はこれに同意します。角度アプリケーション内をナビゲートするには、 'routerLink'を使う必要があります。 – Zze

0

それはちょっとドキュメントで説明しています - あなたはAPP_BASE_HREFを提供したり、あなたのindex.htmlに挿入する必要がありますPathLocationStrategy使用する場合PathLocationStrategy

ルータは、2つの戦略PathLocationStrategyの種類とHashLocationStrategy

をサポートしていますが<base href="/">

これで問題は解決します。

関連する問題