Diferencia entre [routerLink] y routerLink


116

¿Cuál es la diferencia entre [routerLink]y routerLink? ¿Cómo debes usar cada uno?


Son la misma directiva. Utiliza el primero para pasar un valor dinámico y el segundo para pasar una ruta estática como una cadena. Esto se detalla en la documentación: angular.io/docs/ts/latest/api/router/index/…
JB Nizet

Respuestas:


190

Verá esto en todas las directivas:

Cuando usa corchetes, significa que está pasando una propiedad enlazable (una variable).

  <a [routerLink]="routerLinkVariable"></a>

Entonces, esta variable (routerLinkVariable) podría definirse dentro de su clase y debería tener un valor como el siguiente:

export class myComponent {

    public routerLinkVariable = "/home"; // the value of the variable is string!

Pero con las variables, tienes la oportunidad de hacerlo dinámico, ¿verdad?

export class myComponent {

    public routerLinkVariable = "/home"; // the value of the variable is string!


    updateRouterLinkVariable(){

        this.routerLinkVariable = '/about';
    }

Donde, como sin corchetes, solo pasa cadena y no puede cambiarla, está codificada y será así en toda su aplicación.

<a routerLink="/home"></a>

ACTUALIZAR:

La otra especialidad sobre el uso de corchetes específicamente para routerLink es que puede pasar parámetros dinámicos al enlace al que está navegando:

Entonces agregando una nueva variable

export class myComponent {
        private dynamicParameter = '129';
        public routerLinkVariable = "/home"; 

Actualización de [routerLink]

  <a [routerLink]="[routerLinkVariable,dynamicParameter]"></a>

Cuando desee hacer clic en este enlace, se convertiría en:

  <a href="https://stackoverflow.com/home/129"></a>

11
¡Excelente explicación! ¡Gracias! +1
fablexis


3

Enlace de enrutador

routerLink con corchetes y ninguno: explicación simple.

La diferencia entre routerLink = y [routerLink] es principalmente como ruta relativa y absoluta.

De forma similar a un href, es posible que desee navegar a ./about.html o https://your-site.com/about.html .

Cuando usa sin corchetes, navega de forma relativa y sin parámetros;

my-app.com/dashboard/client

"saltar" de my-app.com/dashboard a my-app.com/dashboard/client

<a routerLink="client/{{ client.id }}" .... rest the same

Cuando usa routerLink con corchetes, ejecuta la aplicación para navegar de forma absoluta y puede agregar parámetros, ¿cómo es el rompecabezas de su nuevo enlace?

En primer lugar, no incluirá el "salto" del panel de control / al panel de control / cliente / identificación de cliente y le brindará datos de cliente / identificación de cliente, que es más útil para EDITAR CLIENTE

<a [routerLink]="['/client', client.id]" ... rest the same

La forma absoluta o los soportes routerLink requieren una configuración adicional de sus componentes y app.routing.module.ts

El código sin error "te dirá más / cuál es el propósito de []" cuando realices la prueba. Simplemente marque esto con o sin []. Entonces puede experimentar con selectores que, como se mencionó anteriormente, ayudan con el enrutamiento dinámico.

Selectores de Angular.io

Vea cuál es la construcción routerLink

https://angular.io/api/router/RouterLink#selectors

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.