2015-12-13 2 views
1

я использую HashLocationStrategy, маршрутизация в моем веб-ок, и у меня есть следующие коды:Angular2 перейти на якорь ошибку

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

Когда я нажимаю на <a> теге, angular2 бросить это исключение: ИСКЛЮЧЕНИЕ: TypeError: Невозможно прочитать свойство 'toUrlPath' от нуля

Какая ошибка?
Пожалуйста, помогите мне исправить эту ошибку!

Заранее спасибо

+0

обеспечить plnkr или скрипку для кода (Error). Я использовал тот же код в своем проекте, но у меня нет какой-либо ошибки, о которой вы упоминали ... –

+0

Это здесь: http://plnkr.co/edit/hipD6Rq1AWTn8VXnQ4w3?p=preview. Откройте окно консоли, вы увидите исключение. –

+0

В основном, согласно мне angular2 '[router-link]' после компиляции будет преобразовываться в атрибут 'href' HTML, и здесь, в этом вопросе, когда вы определяете' href = "# jumpToHere", угловое будет пытаться выяснить маршрутизатор с именем ' jumpToHere', который не определен в процедуре маршрутизации. поэтому он будет вызывать и сообщение об ошибке 'toUrlPath' null. Чтобы преодолеть эту ошибку, вы можете попытаться остановить действие по умолчанию с тегом 'href' с помощью javascript (querySelectorAll) и запустить его в соответствии с необходимостью, это может помочь вам избавиться от этой ошибки. –

ответ

0

Его конфликт с вашей стратегией местонахождения provide(LocationStrategy, {useClass: HashLocationStrategy})

с хэш на основе угловой думаю, что вы хотите перейти на другой маршрут, когда вы используете этот синтаксис

с пути на основе , вы будете нуждаться в [routerLink], чтобы перейти к другим маршрутам, поэтому никаких конфликтов /yourroute#youranchor

здесь не рабочий plnkr

+0

Итак, любое решение для меня, которое позволяет использовать 'HashLocationStrategy' и обычно перемещаться к якорю? Потому что, если я использую 'PathLocationStrategy', когда я обновляю страницу, появится ошибка 404. Это может быть ошибка углового2 в альфа. –

+0

Да, это ошибка (ошибка 404) при использовании 'PathlocaionStrategy'. я тоже сталкиваюсь с этой ошибкой, обновляя страницу. –

+1

@PardeepJain Я думаю, что угловая команда знает об этом, но чего вы ожидаете! если вы решите использовать 'HashLocationStrategy', то хеш зарезервирован, и вы должны найти альтернативный способ перехода к вашему целевому div. –

0

Используя ng2-simple-page-router, вы можете перемещаться по якорям в маршрутизированном виде. Или даже передать якорный идентификатор нового маршрута для автоматического перехода к:

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

И если вы хотите Followup маршрут с якорной скачку:

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

Как использовать это с помощью router.navigate()? – rgk

Смежные вопросы