¿Cómo pasar un parámetro a routerLink que está en algún lugar dentro de la URL?


208

Sé que puedo pasar un parámetro a routerLinkrutas como

/user/:id

escribiendo

[routerLink]="['/user', user.id]"

pero qué pasa con rutas como esta:

/user/:id/details

¿Hay alguna manera de configurar este parámetro o debería considerar un esquema de URL diferente?

Respuestas:


348

En su ejemplo particular, haría lo siguiente routerLink:

[routerLink]="['user', user.id, 'details']"

Para hacerlo en un controlador, puede inyectar Routery usar:

router.navigate(['user', user.id, 'details']);

Más información en la sección Matriz de parámetros de enlaces de documentos angulares de Enrutamiento y navegación


se puede proporcionar cualquier vínculo donde puedo encontrar más información sobre este ..
refactor

44
@CleanCrispCode Puede leer más al respecto en los documentos angulares en la guía del enrutador: angular.io/docs/ts/latest/guide/…
Wojciech Kwiatek

¿Qué pasa con la <button mat-button routerLink="...">View user</button>sintaxis?
Stephane

33

Tal vez sea realmente una respuesta tardía, pero si quieres navegar en otra página con param puedes,

[routerLink]="['/user', user.id, 'details']"

tampoco deberías olvidarte de la configuración de enrutamiento como,

 [path: 'user/:id/details', component:userComponent, pathMatch: 'full']

11

Primero configure en la tabla:

const routes: Routes = [  
{
  path: 'class/:id/enrollment/:guid',
  component: ClassEnrollmentComponent
 }
];

ahora en tipo script script:

this.router.navigate([`class/${classId}/enrollment/${4545455}`]);

recibir parámetros en otro componente

 this.activatedRoute.params.subscribe(params => {
  let id = params['id'];
  let guid = params['guid'];

  console.log(`${id},${guid}`);
  });

0

Hay múltiples formas de lograr esto.

  • A través de la directiva [routerLink]
  • El método de navegación (matriz) de la clase Router
  • El método navigationByUrl (cadena) que toma una cadena y devuelve una promesa

El atributo routerLink requiere que importe el routingModule en el módulo de funciones en caso de que haya cargado el módulo de funciones de forma diferida o simplemente importe el módulo de enrutamiento de aplicaciones si no se agrega automáticamente al conjunto de importaciones de AppModule.

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • Navegar
// Inject Router into your component
// Inject ActivatedRoute into your component. This will allow the route to be done related to the current url
this._router.navigate(['user',user.id], {relativeTo: this._activatedRoute})
  • NavigateByUrl
this._router.navigateByUrl(urlString).then((bool) => {}).catch()
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.