我在一个Angular 9项目中工作。
我有一个表,是可重用的,目前我有两个(Parent)组件使用该表。我希望用户能够在表中选择一个项目,并被路由到该项目详情页。问题是这些表在两个不同的路由(比方说。/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 }
});
在parent1和parent2中用同样的方式。缺点是两个父节点都使用了非常相似的函数(重复的代码?
goToDetails(row): void {
this.router.navigate([`${currentRouteInput}/details/` + row.id], {
queryParamsHandling: "merge",
state: { data: row }
});
}
this.router.events
),然后将其设置并使用在 goToDetails()
用上面的func代替输入param.Opt4) ?/lists/parent1
我还以为有一个路由器导航功能,像 router.navigateFromRoute.(['/details/${id}'])
而它只是从当前路线导航并添加到它,所以。/lists/parent1/details/${id}
. 但我看到的唯一的路由器导航功能是 navigate()
和 navigateByUrl()
. 这存在吗?我不知道为什么我认为它存在。有一种方法比其他方法好吗?我想保持这个表组件的可重用性。这种类型的功能有什么标准做法吗?
我将感谢任何见解和技巧,谢谢你!