Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.1K
Views
¿Cómo puedo deshabilitar condicionalmente el atributo routerLink?

En mi aplicación Angular 2, intento deshabilitar un enlace de enrutador sin éxito. Intenté manejar el evento de clic en el evento de click (con event.preventDefault() y event.stopPropagation() ) pero no funciona.

¿Cómo puedo desactivar un routerLink?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Deshabilite pointer-events en el elemento a través de CSS:

 <a [routerlink]="xxx" [class.disabled]="disabled ? true : null">Link</a> a.disabled { pointer-events: none; cursor: default; }

Consulte también Angular2, ¿cuál es la forma correcta de deshabilitar un elemento de anclaje?

o

 <a *ngIf="isEnabled" [routerlink]="xxx">Link</a> <div *ngIf="!isEnabled">not a link</div>

o para reutilizar fácilmente la plantilla de enlace deshabilitada

 <ng-template #disabledLink> <div *ngIf="!isEnabled">not a link</div> </ng-template> <a *ngIf="isEnabled; else disabledLink" [routerLink]="xxx">Link</a>
over 4 years ago · Santiago Trujillo Report

0

Angular 13 y superior

[routerLink]="null" (y undefined ) ahora se usa oficialmente para deshabilitar el routerLink .
(ver Documentos )

Así que esto es suficiente:

 <a [routerLink]="linkEnabled ? 'path' : null">Link</a>

Angular 12 y menos

[routerLink]="null" (y undefined ) se trata como una forma abreviada de una matriz vacía de comandos. Por lo tanto, hace que el enlace del routerLink se vincule a la ruta actual/activa. Este comportamiento nos permite abusar de la directiva routerLinkActive para nuestro propósito:

Modelo:

 <a [routerLink]="linkEnabled ? 'path' : null" [routerLinkActive]="linkEnabled ? 'is_active' : 'is_disabled'">Link</a>

CSS opcional:

 .is_disabled { cursor: default; text-decoration: none; } .is_active { // your style for active router link }

Demostración en vivo (Angular 10):
Ver demostración en StackBlitz

Descripción detallada:

Cuando linkEnabled devuelve false , null hará que routerLink se vincule a la ruta actual/activa.

Si routerLink vincula a la ruta activa, se aplicará la clase que se especifica en routerLinkActive . Eso será is_disabled en este caso.

Allí podemos especificar cómo debe aparecer el routerLink deshabilitado.

routerLink a la ruta activa no activará un evento de navegación.

over 4 years ago · Santiago Trujillo Report

0

Acabo de tener cierto éxito con un problema similar: tener una serie de enlaces de navegación en un ngFor, algunos requerían [routerLink], mientras que otros requerían (hacer clic). Mi problema era que todos los enlaces dependían de [routerLink] para [routerLinkActive] , por lo que tuve que detener routerLink, sin tocar su valor.

 `<a [routerLink]="item.link" routerLinkActive="isActive"> <span (click)="item.click ? item.click($event) : void> </a>`

con:

 `click: ($event) => { $event.stopPropagation(); // Only seems to $event.preventDefault(); // work with both // Custom onClick logic }`

Como el lapso está dentro, puede estar seguro de que la cancelación del evento ocurre antes de que llegue a [routerLink], mientras que routerLinkActive aún se aplicará.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!