Есть способы сделать это с 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 с примером работы.