转到Angular 2中的父路线

时间:2017-03-08 22:31:38

标签: javascript angular

我们说我有一个组件可以创建或编辑的东西

创建的网址为/things/create版本的网址为/things/edit/4。这些路线具有相同的父母。

填写表格后,我会拨打一些网络服务,然后回到之前的状态/things

如何告诉角度回到父路线?

我可以使用this.router.navigate(['../'], {relativeTo : this.route});,但['../']仅适用于/things/create。对于/things/edit/4,它会返回到不存在的/thing/edit

此组件用于两个不同的位置,其中一个在创建之前有一个额外的步骤,因此我无法使用back()

4 个答案:

答案 0 :(得分:2)

基于当前网址的逻辑

if(router.url.indexOf('create')>= 0){
    this.router.navigate(['../'], {relativeTo : this.route});
 }else {
    this.router.navigate(['../../'], {relativeTo : this.route});
}

因此,如果您当前的网址路径包含您知道的创建,您只需返回一个级别,否则您将返回两个级别进行编辑。

使用输入获取基本网址

另一种方法可能是让基本URL的@Input返回。因此,初始化组件的每个组件都必须将父URL传递给它。

{
@Input
parentUrl;

this.router.navigate[parentUrl];
}

答案 1 :(得分:0)

您可以使用

this.router.navigate['/things']

答案 2 :(得分:0)

因此,如果组件正在创建或编辑组件,您应该能够在ActivatedRoute参数中检查事物的id以获取上下文。如果有一个参数[' thingId']则转到../../否则转到../

答案 3 :(得分:0)

可能这个想法有点老了,但我相信它会起作用并且实施起来相当简单。您可以添加名为“source”的查询参数,并在操作完成后导航到“source”。