想象一下这样设置的路由:
module1Routes= [
{path: 'parent1': component: ParentComponent : children:[
{path: 'child': component: ChildComponent},
{path: 'result': component: ResultComponent}
]}
]
module2Routes= [
{path: 'parent2': component: Parent2Component : children:[
{path: 'child': component: ChildComponent},
{path: 'result': component: ResultComponent}
]}
]
现在情况是这样的。我有2个模块,在处理ChildComponent
的最后,我想转到ResultComponent
。
问题是如何知道ResultComponent
的正确路径是什么?
如果用户位于路径parent1/child
中,我希望下一步为parent1/result
,但是当用户位于parent2/child
时,下一步应该为parent2/result
。
在我的ChildComponent
中,我有方法goToResult()
,其职责是导航到***/result
。
我很困惑如何知道***
中有什么?
所以问题是(在ChildComponent中)如何知道此孩子的父母的真实路线是什么?
我完全被困住了。我试图建立没有子片段的父级路径,但这不起作用。 有什么想法吗?
我知道我可以在relativeTo
的配置中使用router.navigate()
关键字。问题是我想在某些服务中调用router.navigate()
,所以我需要给他们传递导航路径
答案 0 :(得分:0)
您可以将路由器添加到组件中,并从当前URL中删除子字符串。
变体A)路由器+字符串操作(component.ts)
class GradientView: UIView {
override class var layerClass: AnyClass {
return CAGradientLayer.self
}
var gradientLayer: CAGradientLayer {
return self.layer as! CAGradientLayer
}
...
}
如果子项可能多次出现或需要删除查询参数,则可以调整替换功能。
变体B)ActivatedRoute(component.ts)
constructor(private router: Router, private yourService: YourService) {
}
goToResult() {
const path = this.router.url.replace('/child', '');
this.yourService.goTo(path);
}