如何将参数传递给 URL 内某处的 routerLink?

Posted

技术标签:

【中文标题】如何将参数传递给 URL 内某处的 routerLink?【英文标题】:How to pass a parameter to routerLink that is somewhere inside the URL? 【发布时间】:2021-12-02 16:12:14 【问题描述】:

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

/user/:id

通过写作

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

但是像这条这样的路线呢:

/user/:id/details

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

【问题讨论】:

【参考方案1】:

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

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

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

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

更多信息请参见 Routing & Navigation 的 Angular 文档 Link Parameters Array 部分

【讨论】:

你能提供任何链接,我可以找到有关此的更多信息。 @CleanCrispCode 您可以在路由器指南的 Angular 文档中了解更多信息:angular.io/docs/ts/latest/guide/… <button mat-button routerLink="...">View user</button> 语法呢?【参考方案2】:

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

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

你也不应该忘记类似的路由配置,

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

【讨论】:

【参考方案3】:

先在表中配置:

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`);
  );

【讨论】:

【参考方案4】:

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

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

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

RouterLink
<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)
NavigateByUrl
this._router.navigateByUrl(urlString).then((bool) => ).catch()

【讨论】:

【参考方案5】:

很简单

<a routerLink="/user/id/details"></a>

【讨论】:

完美运行,非常感谢! @Torben 不客气【参考方案6】:
constructor(private activatedRoute: ActivatedRoute) 

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

这对我有用!

【讨论】:

如果你使用 this.activatedRoute.parmas.subscribe(params => console.log(params['type']) );所以参数而不是查询参数从url获取参数【参考方案7】:

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

Ref

【讨论】:

【参考方案8】:
constructor(private activatedRoute: ActivatedRoute) 

如果你会使用

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

so params 而不是 queryparamas 从 url 中获取参数——

【讨论】:

以上是关于如何将参数传递给 URL 内某处的 routerLink?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过将参数传递给 URL 来使用 jQuery 刷新页面

如何通过 URL 将参数传递给闪亮的应用程序

如何通过嵌入式 URL 将参数传递给 PowerBI Embedded

如何将 JSON 返回数据作为参数传递给 URL 路由(laravel)

如何将 url 中的参数传递给背包创建表单

如何将 URL 中的数组作为参数传递给 Promise.all