我们说我有一个组件可以创建或编辑的东西。
创建的网址为/things/create
,版本的网址为/things/edit/4
。这些路线具有相同的父母。
填写表格后,我会拨打一些网络服务,然后回到之前的状态/things
。
如何告诉角度回到父路线?
我可以使用this.router.navigate(['../'], {relativeTo : this.route});
,但['../']
仅适用于/things/create
。对于/things/edit/4
,它会返回到不存在的/thing/edit
。
此组件用于两个不同的位置,其中一个在创建之前有一个额外的步骤,因此我无法使用back()
。
答案 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”。