2015-12-13 73 views
1

我用HashLocationStrategy,在我的網絡的路由是確定的,我有以下代碼:Angular2導航錨錯誤

<a href="#jumpToHere">Jump</a> 
<h3 id="jumpToHere">Hello</h3> 

當我點擊<a>標籤,angular2拋出此異常:異常:類型錯誤:無法讀取屬性'toUrlPath'爲空

這是什麼錯誤?
請幫我解決這個錯誤!

在此先感謝

+0

爲您的代碼提供plnkr或小提琴(錯誤)。我在我的項目中使用了相同的代碼,但我沒有得到任何你提到的錯誤... –

+0

它在這裏:http://plnkr.co/edit/hipD6Rq1AWTn8VXnQ4w3?p=preview。 打開控制檯窗口,您將看到異常。 –

+0

基本上根據我的angular2'[router-link]'編譯後會轉換爲HTML的'href'屬性,這裏在你定義'href =「#jumpToHere」時這個問題'angular將嘗試找出名爲' jumpToHere'在路由過程中沒有定義。所以會拋出錯誤消息'toUrlPath'爲null。爲了克服這個錯誤,你可以嘗試使用javascript(querySelectorAll)來停止'href'標籤的默認動作,並根據需要運行它,這可能會幫助你擺脫這個錯誤。 –

回答

0

它與你的定位策略provide(LocationStrategy, {useClass: HashLocationStrategy})

與衝突基於散列的角度會認爲你想,當您使用語法

與基於路徑導航到另一條路線,你需要一個[routerLink]導航到其他路線,所以沒有衝突 /yourroute#youranchor

這裏工作plnkr

+0

那麼,對於我能夠保持使用'HashLocationStrategy'並正常導航到錨點的任何解決方案?因爲如果我在刷新頁面時使用'PathLocationStrategy',則會出現404錯誤。它可能是alpha中的angular2錯誤。 –

+0

是的,這是使用'PathlocaionStrategy'時的錯誤(404錯誤)。我在刷新頁面時也面臨這個錯誤。 –

+1

@PardeepJain我認爲角團隊意識到這一點,但你期望什麼!如果你選擇使用'HashLocationStrategy',那麼散列是保留的,你應該找到另一種方法來跳轉到你的目標div。 –

0

使用ng2-simple-page-router您可以導航到路由視圖內的錨點。甚至通過錨ID到一個新的路線自動跳轉到:

<a simplePageScroll href="#myanchor">Go there</a> 

如果你想隨動與錨跳路由:

<a simplePageScroll [routerLink]="['Home']" href="#myanchor">Go there</a> 
+0

如何使用router.navigate()? – rgk