Есть способы сделать это с помощью angular2, но я категорически не согласен, что это ошибка. Я не знаком с angular1, но это кажется действительно неправильным поведением, хотя, как вы утверждаете, это полезно в некоторых случаях, но ясно, что это не должно быть поведением по умолчанию для любой структуры.
Помимо разногласий, вы можете написать простую директиву, которая захватывает все ваши ссылки и проверяет содержимое href
, и если его длина равна 0, вы выполняете preventDefault()
, вот небольшой пример.
@Directive({
selector : '[href]',
host : {
'(click)' : 'preventDefault($event)'
}
})
class MyInhertLink {
@Input() href;
preventDefault(event) {
if(this.href.length == 0) event.preventDefault();
}
}
Вы можете заставить его работать во всем приложении, добавив эту директиву в PLATFORM_DIRECTIVES
bootstrap(App, [provide(PLATFORM_DIRECTIVES, {useValue: MyInhertLink, multi: true})]);
Вот plnkr с рабочим примером.
person
Eric Martinez
schedule
26.02.2016
<a>
, без HTML? - person Sasxa   schedule 26.02.2016a
. Но это выглядит хакерским. - person s.alem   schedule 26.02.2016<base>
, поэтому, когда вы нажимаете ссылку<a href="#">
, а не переходите к#
, вы попадаете на/#
или как там у вас базовый href. Интересно посмотреть, как это повлияет на проблему с GitHub. - person lukiffer   schedule 04.07.2016