Existem maneiras de fazer isso com o angular2, mas eu discordo totalmente que isso é um bug. Não estou familiarizado com o angular1, mas isso parece um comportamento realmente errado, embora, como você alega, seja útil em alguns casos, mas claramente esse não deve ser o comportamento padrão de qualquer estrutura.
Discordâncias à parte, você pode escrever uma diretiva simples que agarre todos os seus links e verifique href
o conteúdo de cada um. Se o comprimento for 0, você executará preventDefault()
, aqui está um pequeno exemplo.
@Directive({
selector : '[href]',
host : {
'(click)' : 'preventDefault($event)'
}
})
class MyInhertLink {
@Input() href;
preventDefault(event) {
if(this.href.length == 0) event.preventDefault();
}
}
Você pode fazê-lo funcionar em seu aplicativo adicionando esta diretiva em PLATFORM_DIRECTIVES
bootstrap(App, [provide(PLATFORM_DIRECTIVES, {useValue: MyInhertLink, multi: true})]);
Aqui está um plnkr com um exemplo de trabalho.