En Angular 1.x puedo hacer lo siguiente para crear un enlace que básicamente no hace nada:
<a href="">My Link</a>
Pero la misma etiqueta navega a la base de la aplicación en Angular 2. ¿Cuál es el equivalente de eso en Angular 2?
Editar: Parece un error en el Angular 2 Router y ahora hay un problema abierto en github sobre eso.
Estoy buscando una solución lista para usar o una confirmación de que no habrá ninguna.
<a>
, sin "html"?a
etiquetas. Pero eso parece hacky.Respuestas:
Si tiene Angular 5 o superior, simplemente cambie
dentro
Se mostrará un enlace con un icono de mano al pasar el mouse sobre él y hacer clic en él no activará ninguna ruta.
Nota: Si desea mantener los parámetros de consulta, debe configurar la
queryParamsHandling
opción parapreserve
:fuente
[routerLink]=""
como<a href="null" (click)="myFunction()">My Link</a>
Renular 5 en Chrome 64.[routerLink]=""
/href="null"
está trabajando en IE 11[routerLink]=""
, el texto Haga clic en mí no se muestra como un enlace y no muestra el icono del cursor de mano.Eso será lo mismo, no tiene nada relacionado
angular2
. Es simple etiqueta html.Básicamente
a
, la etiqueta (ancla) será procesada por el analizador HTML.Editar
Puede deshabilitarlo
href
al tenerlojavascript:void(0)
activado para que no suceda nada. (Pero es un truco). Sé que Angular 1 proporcionó esta funcionalidad fuera de la caja que ahora no me parece correcta.Plunkr
Al revés podría estar usando una
routerLink
directiva con""
valor de paso que eventualmente generará un espacio en blancohref=""
fuente
#
anclaje internohref
puede afectar laAngular1
ruta ... puedo enviarte a la página predeterminada (si está allí)#
en angular 1.x. Quiero un enlace que no haga nada en angular2, al igual quehref=""
en angular 1.x.<a href="">My Link</a>
que haré eso ... ¿pero qué sucede actualmente con él?href="javascript:void(0);"
funciona para mí.Hay formas de hacerlo con angular2, pero estoy totalmente en desacuerdo porque es un error. No estoy familiarizado con angular1, pero esto parece un comportamiento realmente incorrecto, aunque como usted afirma es útil en algunos casos, pero claramente este no debería ser el comportamiento predeterminado de ningún marco.
Dejando de lado los desacuerdos, puede escribir una directiva simple que tome todos sus enlaces y verifique
href
el contenido y, si su longitud es 0, se ejecutapreventDefault()
, aquí hay un pequeño ejemplo.Puede hacer que funcione en su aplicación agregando esta directiva en PLATFORM_DIRECTIVES
Aquí hay un plnkr con un ejemplo funcionando.
fuente
pointer-events
es la falta de soporte con IE ( caniuse ) (puedo evitarlo incluso con IE11 por extraño que parezca), y no impide hacer clic en el enlace desde la consola. He votado a favor de la respuesta @Pankaj porque es la más fácil desde mi punto de vista, mi respuesta es solo una forma de hacerlo con angular2, podría hacerlo más fácil, pero los selectores css son limitados.Un achor debería navegar hacia algo, así que supongo que el comportamiento es correcto cuando se enruta. Si lo necesitas para alternar algo en la página, ¿es más como un botón? Yo uso bootstrap para poder usar esto:
fuente
Estoy usando esta solución alternativa con css:
html
Espero que esto ayude
fuente
styles.css
archivo de nivel superior del proyecto Angular y funcionará muy bien!solución de simeyla :
fuente
Una solución realmente simple es no usar una etiqueta A, use un intervalo en su lugar:
fuente
button
Elemento en caso de que quieradoSomething
en la página.<button>
Los elementos activan el clic de forma predeterminada cuandospace
se presiona la tecla. El usospan
(o<a>
) elimina esta función, por lo que las acciones del teclado no funcionarán como se esperabaAquí hay una manera simple
capturar el evento burbujeante y derribarlo
fuente
Aquí hay algunas formas de hacerlo:
<a href="" (click)="false">Click Me</a>
<a style="cursor: pointer;">Click Me</a>
<a href="javascript:void(0)">Click Me</a>
fuente
En mi caso, eliminar el atributo href resuelve el problema siempre que haya una función de clic asignada a a.
fuente
Has evitado el comportamiento predeterminado del navegador. Pero no necesita crear una directiva para lograrlo.
Es fácil como el siguiente ejemplo:
my.component.html
my.component.ts
fuente
Actualizado para Angular 5
fuente
Tengo 4 soluciones para la etiqueta de anclaje ficticio.
4. Si está utilizando bootstrap:
fuente
Me pregunto por qué nadie sugiere routerLink y routerLinkActive (Angular 7)
Eliminé el href y ahora estoy usando esto. Al usar href, iba a la url base o volvía a cargar la misma ruta.
fuente
debe evitar el comportamiento predeterminado del evento de la siguiente manera.
En html
En el archivo ts
fuente
Actualizado para Angular2 RC4:
Utilizando
fuente
La solución realmente simple es
(click)="(null)"
<a class="btn btn-default" (click)="(null)">Default</a>
fuente