No Angular 1.x, posso fazer o seguinte para criar um link que basicamente não faz nada:
<a href="">My Link</a>
Mas a mesma tag navega para a base de aplicativos no Angular 2. Qual é o equivalente ao Angular 2?
Edit: Parece um bug no roteador Angular 2 e agora existe um problema em aberto no github sobre isso.
Estou procurando uma solução pronta para uso ou uma confirmação de que não haverá.
<a>
, sem "html"?a
tags. Mas isso parece hacky.Respostas:
Se você possui Angular 5 ou superior, basta alterar
para dentro
Um link será exibido com um ícone de mão ao passar o mouse sobre ele e clicar nele não acionará nenhuma rota.
Nota: Se você deseja manter os parâmetros da consulta, defina a
queryParamsHandling
opção parapreserve
:fonte
[routerLink]=""
torna como<a href="null" (click)="myFunction()">My Link</a>
Angular 5 no Chrome 64.[routerLink]=""
/href="null"
está funcionando no IE 11[routerLink]=""
, o texto Clique em mim não é exibido como um link e não mostra o ícone do cursor de mão.Será o mesmo, não tem nada relacionado
angular2
. É simples tag html.Basicamente, a
a
marca (âncora) será renderizada pelo analisador de HTML.Editar
Você pode desativar esse
href
por terjavascript:void(0)
nele assim nada vai acontecer nele. (Mas é hack). Eu sei que o Angular 1 forneceu essa funcionalidade pronta para uso, o que não parece correto para mim agora.Plunkr
Por outro lado, poderia estar usando
routerLink
diretiva com""
valor de passagem que acabará gerando espaço em brancohref=""
fonte
#
dentro âncorahref
pode afetarAngular1
route..may enviar página padrão (se a sua existência)#
angular 1.x. Eu quero um link que não faça nada no angular2, assim comohref=""
no angular 1.x.<a href="">My Link</a>
fará isso ... mas o que está acontecendo atualmente com ele?href="javascript:void(0);"
funciona para mim.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.Você pode fazê-lo funcionar em seu aplicativo adicionando esta diretiva em PLATFORM_DIRECTIVES
Aqui está um plnkr com um exemplo de trabalho.
fonte
pointer-events
é a falta de suporte com o IE ( caniuse ) (eu posso ignorá-lo mesmo com o IE11 por incrível que pareça), e isso não impede que você clique no link do console. Promovi uma resposta ao @Pankaj com voto positivo porque é a mais fácil do meu ponto de vista, minha resposta é apenas uma maneira de fazê-lo com angular2, eu poderia facilitar, mas os seletores de css são limitados.Um achor deve navegar para alguma coisa, então acho que o comportamento é correto quando é direcionado. Se você precisar alternar algo na página, é mais como um botão? Eu uso o bootstrap para poder usar isso:
fonte
Estou usando esta solução alternativa com css:
html
Espero que isto ajude
fonte
styles.css
arquivo de nível superior do projeto Angular e ele funcionará muito bem!solução simeyla :
fonte
Uma solução realmente simples é não usar uma tag A - use uma extensão:
fonte
button
elemento, se desejardoSomething
na página.<button>
elementos acionam o clique por padrão quando aspace
tecla é pressionada. Usandospan
(ou<a>
) remove esse recurso - assim ações do teclado não vai funcionar como esperadoAqui está uma maneira simples
capturar o evento borbulhante e derrubá-lo
fonte
Aqui estão algumas maneiras de fazer isso:
<a href="" (click)="false">Click Me</a>
<a style="cursor: pointer;">Click Me</a>
<a href="javascript:void(0)">Click Me</a>
fonte
No meu caso, a exclusão do atributo href resolve o problema, desde que haja uma função de clique atribuir a a.
fonte
Você impediu o comportamento padrão do navegador. Mas você não precisa criar uma diretiva para fazer isso.
É fácil como no exemplo a seguir:
my.component.html
my.component.ts
fonte
Atualizado para o Angular 5
fonte
Eu tenho 4 soluções para tag de âncora fictícia.
4. Se você estiver usando o bootstrap:
fonte
Gostaria de saber por que ninguém está sugerindo routerLink e routerLinkActive (Angular 7)
Eu removi o href e agora estou usando isso. Ao usar o href, ele estava indo para o URL base ou recarregando a mesma rota novamente.
fonte
você precisa impedir o comportamento padrão do evento da seguinte maneira.
Em html
No arquivo ts
fonte
Atualizado para o Angular2 RC4:
Usando
fonte
A solução realmente simples é
(click)="(null)"
<a class="btn btn-default" (click)="(null)">Default</a>
fonte