如何将参数传递给 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 将参数传递给 PowerBI Embedded