2016-07-01 76 views
4

我創建了一個示例plunker,將多個參數傳遞到下一頁,它不起作用。點擊這些項目後,危機中心路由不起作用,這裏是重新演示的演示。Angular 2路由器沒有通過多個參數工作

http://plnkr.co/edit/ngNSsKBzAuhaP0EjKVJX?p=preview

onSelect(crisis: Crisis) { 
    // Navigate with Absolute link 
    //this.router.navigate(['/crisis-center', 1]); //this is working. 
    this.router.navigate(['/crisis-center', { id: '1', id2:'2'}]); //this is not working 
    } 

//下面是路線:

//{ path: 'crisis-center/:id', component: CrisisDetailComponent } //-- this is working 
    { path: 'crisis-center/:id /:id2', component: CrisisDetailComponent}, // this is not working 

ngOnInit() { 
    this.sub = this.route 
     .params 
     .subscribe(params => { 
     let id = +params['id']; 
     let id2 = +params['id2']; //Unable to read id and id2 values 
     this.service.getCrisis(id) 
      .then(crisis => { 
      if (crisis) { 
       this.editName = crisis.name; 
       this.crisis = crisis; 
      } else { // id not found 
       this.gotoCrises(); 
      } 
      }); 
     }); 
    } 

我有三個層次的導航它從危機爲中心,以危機的細節動作,然後從危機來說,細節 - > transactiondetail。所以在我進入危機細節之後,我想通過危機和危機處理來回到細節和危機清單。

我想在這裏傳遞多個參數任何人有這個問題?

此外,我想從瀏覽器url中隱藏URL參數,並顯示別名,以前的'as'關鍵字用於工作,現在它不起作用。

任何幫助表示讚賞

+0

嘗試命名你的第二個參數完全不同的東西,如「名」,而不是「ID2」 –

+0

@JarodMoser它不我沒有改名爲id2。如果可能的話,我提供了重擊器,請嘗試編輯它並查看它是否有效。感謝您的迴應。 –

+0

對不起,關於膝蓋猛拉的答覆,我已經有一些問題,因此命名PARAMS如此接近eachother ... @maxisam找到你的錯誤 –

回答

4

您在之間的crisis-center/:id /:id2

這裏是working plunker

+0

非常感謝,我怎樣才能隱藏出現在瀏覽器上的ID的urlI想要在瀏覽器網址上顯示ID時使用別名,而不是實際的網址。 Earlies'as'關鍵字和IsProd使用現在無法正常工作。你能否提供解決方案來欣賞它。 –

+0

對不起,我不知道,但我認爲你應該爲這個問題開一個不同的問題,所以你可以讓人們來幫助你。 – maxisam

6

使用路由器組件(從有空間「@角/路由器,不是從」 @角/路由器棄用'),您通過多個參數如下:

this.router.navigate(['/crisis-center', 1, 2]); 

你試圖做到這一點:

this.router.navigate(['/crisis-center', { id: '1', id2:'2'}]); //this is not working 

因爲你度過了一個對象作爲第二個參數,你傳遞的查詢參數不是路由器的參數。所以,它的網址是:

localhost:3000/crisis-center;id=1&id2=2 

你可以閱讀更多關於它在這裏:https://angular.io/docs/ts/latest/guide/router.html#!#query-parameters