Como passar um parâmetro para o routerLink que está em algum lugar dentro da URL?


208

Eu sei que posso passar um parâmetro routerLinkpara rotas como

/user/:id

por escrito

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

mas e rotas como esta:

/user/:id/details

Existe uma maneira de definir esse parâmetro ou devo considerar um esquema de URL diferente?

Respostas:


347

No seu exemplo específico, você faria o seguinte routerLink:

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

Para fazer isso em um controlador, você pode injetar Routere usar:

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

Mais informações na documentação Angular Matriz de parâmetros de link de Roteamento e navegação


você pode fornecer qualquer link onde eu posso encontrar mais informações sobre isso ..
refactor

4
@CleanCrispCode Você pode ler mais sobre isso nos documentos do Angular no guia do roteador: angular.io/docs/ts/latest/guide/…
Wojciech Kwiatek

E a <button mat-button routerLink="...">View user</button>sintaxe?
Stephane

33

Talvez seja uma resposta muito tarde, mas se você quiser navegar em outra página com param, pode,

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

Além disso, você não deve esquecer o roteamento de configuração como,

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

11

Primeiro configure na tabela:

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

agora no tipo código de script:

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

receber parâmetros em outro componente

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

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

0

Existem várias maneiras de conseguir isso.

  • Através da diretiva [routerLink]
  • O método navigate (Array) da classe Router
  • O método navigateByUrl (string) que pega uma string e retorna uma promessa

O atributo routerLink exige que você importe o routingModule para o módulo de recurso, caso você tenha carregado preguiçosamente o módulo de recurso ou apenas importe o app-routing-module se ele não for adicionado automaticamente à matriz de importações do 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()
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.