Angular Router-如何找到到父组件的路由

时间:2018-09-15 22:27:41

标签: angular angular2-routing angular-routing

想象一下这样设置的路由:

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(),所以我需要给他们传递导航路径

1 个答案:

答案 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);
}