ine*_*now 2 router parent-child navigateurl angular angular9
我正在从事 Angular 9 项目。
我有一个可重复使用的表,现在我有两个(父)组件使用该表。我希望用户能够选择表格上的项目并路由到该项目的详细信息页面。问题是这些表位于两个不同的路由(假设:/lists/parent1和lists/parent2),并且详细信息页面是这些路由的扩展。因此,如果您单击parent1 表的某个项目,则需要转到路线/lists/parent1/details/${id},如果您使用parent2 的表,则需要转到/lists/parent2/details/${id}。我还通过路由器传递状态数据,并设置 queryParamsHandling。
我认为可以通过多种方式做到这一点,并且我正在尝试找出哪种方法最好。
this.router.navigate([`lists/parent1/details/` + row.id], {
queryParamsHandling: "merge",
state: { data: row }
});
Run Code Online (Sandbox Code Playgroud)
在parent1中和在parent2中以同样的方式。缺点是父母双方都使用非常相似的函数(重复的代码?)
goToDetails(row): void {
this.router.navigate([`${currentRouteInput}/details/` + row.id], {
queryParamsHandling: "merge",
state: { data: row }
});
}
Run Code Online (Sandbox Code Playgroud)
this.router.events),然后设置它并在goToDetails()上面使用的 func 中使用它而不是输入参数。/lists/parent1我认为有一个路由器导航功能router.navigateFromRoute.(['/details/${id}']),它只会从当前路线导航并添加到它,所以:/lists/parent1/details/${id}。但我看到的唯一路由器导航功能是navigate()和navigateByUrl()。这存在吗?我不知道为什么我这么想。一种方法比其他方法更好吗?我想让这个表组件保持可重用。此类功能有标准做法吗?
我将不胜感激任何见解和提示,谢谢!
您可以将激活的路线传递给导航选项您在构造函数中注入路线:AcitvatedRoute,并在调用导航时设置它。在您的表中,您可以为此致电指南。this.router.navigate(row.id, {relativeTo: this.route});
| 归档时间: |
|
| 查看次数: |
6381 次 |
| 最近记录: |