2017-03-08 57 views
0

比方說,我有一個組件創建或編輯東西轉到Angular 2中的父路由

創建 URL是/things/create版的網址是/things/edit/4。這些路線具有相同的父級。

一旦我填寫表單,我打電話給一些webservice,然後回到我以前的狀態,這是/things

我該如何告訴角度回到父路線?

我可以使用this.router.navigate(['../'], {relativeTo : this.route});,但['../']只適用於/things/create。對於/things/edit/4它會回到/thing/edit,這不存在。

這個組件在兩個不同的地方使用,其中一個在創建之前有一個額外的步驟,所以我不能使用back()

+1

你不能明確地說router.navigate ['/東西']? –

+0

對不起,我沒有提到。這個組件將在兩個不同的地方使用。 – MrVoodoo

+0

怎麼樣回(){ this._location.back(); } –

回答

0

您可以使用

this.router.navigate['/things'] 
+0

您可以爲您的文章的質量或如何工作做很多事情。在這種情況下,我可能會詳細說明路徑的路徑,因爲提問者似乎不理解路徑。 –

1

邏輯基於當前的URL

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

因此,如果您目前的網址路徑中包含了創建你知道你必須要返回上一級目錄,否則你回到編輯的兩個級別。

使用輸入來獲得基URL

另一種方法可能是有一個@input爲基礎URL回去。因此,每個初始化組件的組件都必須將它傳遞給父url。

{ 
@Input 
parentUrl; 

this.router.navigate[parentUrl]; 
} 
0

因此,如果組件正在創建或編輯組件,那麼您應該能夠檢查ActivatedRoute參數中的事件ID以獲取上下文。如果有一個參數['thingId'],然後去../../否則去../

0

可能這個想法有點老派,但我相信它會起作用,並且相當簡單。您可以添加名爲「源」的查詢參數,並在操作完成後導航到「源」。