261

我知道我可以将参数传递routerLink给路由,例如

/user/:id

通过写作

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

但是这样的路线呢:

/user/:id/details

有没有办法设置这个参数或者我应该考虑一个不同的 URL 方案?

4

8 回答 8

428

在您的特定示例中,您将执行以下操作routerLink

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

要在控制器中执行此操作,您可以注入Router并使用:

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

路由和导航的 Angular 文档链接参数数组部分中的更多信息

于 2016-06-27T20:44:32.920 回答
59

也许这真的是迟到的答案,但如果你想用参数导航另一个页面,你可以,

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

你也不应该忘记路由配置,例如,

 [path: 'user/:id/details', component:userComponent, pathMatch: 'full']
于 2018-04-24T06:49:59.210 回答
20

首先在表中配置:

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

现在输入脚本代码:

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

在另一个组件中接收参数

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

  console.log(`${id},${guid}`);
  });
于 2019-05-20T06:35:07.173 回答
7

有多种方法可以实现这一目标。

  • 通过 [routerLink] 指令
  • Router 类的 navigate(Array) 方法
  • navigateByUrl(string) 方法接受一个字符串并返回一个承诺

routerLink 属性要求您将 routingModule 导入功能模块,以防您延迟加载功能模块,或者如果 app-routing-module 未自动添加到 AppModule 导入数组,则只需导入它。

  • 路由器链接
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • 导航
// 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})
  • 按网址导航
this._router.navigateByUrl(urlString).then((bool) => {}).catch()
于 2020-06-05T14:00:40.650 回答
5

这很简单

<a routerLink="/user/{{id}}/details"></a>
于 2021-05-27T20:28:19.143 回答
3
constructor(private activatedRoute: ActivatedRoute) {

this.activatedRoute.queryParams.subscribe(params => {
  console.log(params['type'])
  });  }

这对我有用!

于 2020-07-18T21:20:09.180 回答
0

app-routing.module.ts

const routes: Routes = [
  { path: 'products', component: ProductsComponent },
  { path: 'product/:id', component: ProductDetailsComponent },
  { path: '', redirectTo: '/products', pathMatch: 'full' },
];

在控制器中,您可以像这样导航,

this.router.navigate(['/products', productId]);

它会让你进入这样的路径:http://localhost:4200/products/product-id

参考

于 2020-11-06T21:08:19.080 回答
0
constructor(private activatedRoute: ActivatedRoute) {}

在你会使用的情况下

`this.activatedRoute.parmas.subscribe(params => { console.log(params['type']) }); }`

所以params而不是queryparamas从url中获取参数——</p>

于 2021-04-05T21:04:15.610 回答